无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web

      它的错误原因和底下的一样,我就直接复制、粘贴了。

 

无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDow转老韩的:解决System.Web.UI.LiteralControl (2009-04-02 18:02:53)
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_r("所属单位").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了,呵呵。

 

### 回答1: 在 ASP.NET Mobile Web Form 中设置背景图可以通过以下步骤实现: 1. 在 Mobile Web Form 中添加一个 Panel 控件作为容器。 2. 将 Panel 控件的 CssClass 属性设置为一个自定义的 CSS 类,例如 "background-image". 3. 在 ASP.NET Mobile Web Form 中添加一个 CSS 文件,并在其中定义 "background-image" 类的样式。 4. 在 CSS 文件中,使用 background-image 属性来设置背景图的 URL。 示例代码如下: ``` <asp:Panel ID="Panel1" runat="server" CssClass="background-image"> <!-- 在此添加其他控件 --> </asp:Panel> ``` CSS 文件中的样式定义: ``` .background-image { background-image: url('background.jpg'); background-repeat: no-repeat; background-size: cover; } ``` 其中,background-image 属性指定背景图的 URL,background-repeat 属性指定背景图的平铺方式,background-size 属性指定背景图的大小。可以根据具体需求进行调整。 ### 回答2: 要设置ASP.NET Mobile Web Form的背景图,可以按照以下步骤进行操作: 1. 在项目中创建一个新的CSS文件,用于定义背景图的样式。 2. 在CSS文件中添加背景图的样式,可以使用background-image属性来指定背景图的URL。例如,可以使用以下代码定义一个背景图样式: ``` body { background-image: url('background.jpg'); background-repeat: no-repeat; background-size: cover; } ``` 3. 将CSS文件链接到ASP.NET Mobile Web Form页面中。可以在页面的<head>部分使用<link>标签来引入CSS文件。例如: ``` <link href="styles.css" rel="stylesheet" type="text/css" /> ``` 4. 保存并运行ASP.NET Mobile Web Form页面,此时页面的背景应该已经被设置为指定的背景图了。 需要注意的是,CSS文件中指定的背景图URL应该与实际的图片文件路径相匹配,可以使用相对路径或绝对路径进行指定。另外,还可以根据需要调整背景图的重复方式(如不重复、横向重复、纵向重复等)和大小(如完全覆盖、等比例缩放等)。 ### 回答3: 在ASP.NET Mobile Web Form中,可以通过以下步骤来设置背景图片: 1. 打开你的Mobile Web Form页面的代码文件(.aspx.cs)。 2. 在Page_Load函数中,使用以下语句来引用使用的CSS样式文件: Page.Header.Controls.Add(new LiteralControl("<link rel='stylesheet' type='text/css' href='styles.css' />")); 3. 在项目的根目录下创建一个新的CSS文件,命名为styles.css(或者你喜欢的任何名称)。 4. 打开styles.css文件,并在其中添加以下代码: ``` body { background-image: url('background.jpg'); /* 替换为你想要的背景图片的路径 */ background-repeat: no-repeat; background-size: cover; /* 根据需要调整图片的缩放方式 */ } ``` 5. 将你想要用作背景图片的图像文件复制到项目的根目录,并确保在代码中指定了正确的文件路径。 6. 在浏览器中运行你的ASP.NET Mobile Web Form应用程序,你应该能够看到背景图片已经成功设置为你指定的图像。 请注意,以上步骤是在ASP.NET Mobile Web Form中使用CSS样式设置背景图片的常见方法。你也可以根据需要使用其他方法来实现相同的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值