全国统一热线:
028-86758058
18980748058
购买流程
付款方式
常见问题
在线提问
续租服务
购物车(
0
件)
用户名:
密 码:
记住
首 页
HOME
域名注册
DOMAIN
虚拟主机
WEB HOST
成品网站超市
AUTO Site
VPS主机
VPS SERVER
云 主 机
CLOUD HOST
租用托管
SERVER
海外主机
HK HOST
代理专区
AGENT
客服中心
SERVICE
站长教程
SERVICE
欢迎光临西部数据云计算中心,我们将竭诚为您提供最优质的服务!
中文域名
域名转入
域名转出
DNS管理
动态域名
获取域名证书
域名停放
域名过户
集群主机
双线主机
基本主机
港台主机
论坛主机
Linux主机
Vip合租主机
超G型主机
ASP.net主机
Java主机
智能建站主机
网店主机
美国主机
数据库
成品网站超市
智能建站主机
集群VPS主机
国内VPS主机
香港VPS主机
美国VPS主机
云主机介绍
云主机购买
服务器租用
主机托管
常见问题
香港主机
港台主机
美国主机
国内免备案
步骤流程
代理级别
代理合同
代理模式
代理优势
在线申请
产品列表
常见问题
代理商分布图
常见问题
有问必答
跟踪提问
购买流程
产品价格
付款方式
常用软件
网站备案
续租服务
汇款确认
相关文档
联系我们
域名资讯
主机资讯
行业动态
网页制作
php教程
mysql教程
域名资讯
云计算资讯
网络编程
您当前的位置:
首页
>
网络编程
>
Net教程
无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误的解决
时间:2015-01-29 来源:互联网 作者:佚名
本文章将解决:
1.解释什么是System.Web.UI.LiteralControl
2.为什么会经常发生法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型……的错误
3.GridView控件中查找模板列的控件(解释Cells和Controls)
在用GridView控件绑定数据时,经常会要将某列转换为模板列,如:
我们在页面中拉一控件GridView,名字:GVData,将其中某列转换为模板列,在这里我们转换的是列“所属单位”,页面模板列部分代码如下:
<asp:TemplateField HeaderText="所属单位">
<EditItemTemplate>
<asp:HiddenField ID="HDFxz" runat="server" Value='<%#Bind("所属单位") %>' />
<asp:DropDownList ID="DDLxz" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# return2dwNAME(Eval("所属单位").ToString()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
由上大家可以看到,这个模板列的编辑模板下有两个控件,一个是隐藏域HDFxz,一个是下拉列表DDLxz,然后我们在.cs页面中取下拉列表DDLxz的值,部分代码:
protected void GVData_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string dwid = ((DropDownList)this.GVData.Rows[e.RowIndex].Cells[2].Controls[1]).SelectedValue;
}
注:以上是修改数据时触发的,我们放到这里只是为了说明问题,不是全部代码,没有实际意义。
我们来解释下,e.RowIndex是取得当前修改数据行的索引值,this.GVData.Rows[e.RowIndex]这个是由当前索引获得当前行,Cells[2]表示是当前行下的第三列(从0开始算起),Controls[1]表示第三列下的第二个控件(也是从0算起),这样解释后我们就可以明白了,dwid 的值应当是要取的是下拉列表框DDLxz的值了(因为下拉列表框在编辑模板中属于第二个控件,这个我们在上面提到过)。
运行后会出错:无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDownList”。
可能大家都很纳闷了,再返回去检查一遍,没有数错啊,这时我们就要看看到底什么是System.Web.UI.LiteralControl控件了?
System.Web.UI.LiteralControl:简单的解释是任何不需要在
服务器
上处理的其他字符串.
这也就是说我们上面的编辑模板存在“不需要在服务器上处理的其他字符串”,那会是什么在搞鬼呢。
经过分析这句话“其他字符串”,然后再看下模板列的源码,怀疑是由于生成了模板列后产生了空格产生的,因为空格也是字符串啊,所以将源码修改为:
<asp:TemplateField HeaderText="所属单位">
<EditItemTemplate><asp:HiddenField ID="HDFxz" runat="server" Value='<%#Bind("所属单位") %>' /><asp:DropDownList ID="DDLxz" runat="server" /></EditItemTemplate>
<ItemTemplate>
也就是说把EditItemTemplate标签之间的空格去掉。这时我们再运行,OK,大功告成啊,呵呵,原来真的是空格在搞鬼啊!.net把空格当成了System.Web.UI.LiteralControl了,呵呵!
来顶一下
返回首页
推荐资讯
.NET中获取Access新增记录Id怪现象
复制代码 代码如下: using System; using System.Data.OleDb
Asp.Net Mvc2 增删改查DEMO附下载
1、List页面,一般List页面主要用来显示数据,本文中的List页
相关文章
无相关信息
栏目更新
栏目热门
返回首页
关于我们
联系我们
付款方式
价格总览
资讯中心
友情链接
媒体关注
有问必答
投诉建议
网站备案
《中华人民共和国增值电信业务经营许可证》编号:川B2-20080058号
官方网址:
xibushuju.com
西部数据
Copyright © 2002~2015
天府快车
版权所有
电话总机:
028-86758058
(50线) 传真:
028-86758058