在aspx里面的id,在aspx.vb里面不认,有谁碰到过了?

时间:2022-04-30 23:54:52
我在模板列里给label设置的id竟然在aspx.vb里面不认,然后在aspx.vb里面手工添加,说不没有实例。有谁碰到过吗?

8 个解决方案

#1


你添加的必须说明成protected,不能是private
因为ASPX实际上是.vb中类的子类,所以必须让子类能够访问

#2


是的,我添加的说明是protected的
aspx:
<asp:TemplateColumn HeaderText="是否提交">
<ItemTemplate>
<asp:Label runat="server" ID="Label1" CssClass="class1" Text='<%# DataBinder.Eval(Container, "DataItem.is_submit") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="is_submited" CssClass="class1" Text='<%# DataBinder.Eval(Container, "DataItem.is_submit") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
aspx.vb:
Protected WithEvents is_submited As System.Web.UI.WebControls.Label
Protected WithEvents Label1 As System.Web.UI.WebControls.Label

不过就是说我没有实例,实在看不出哪里不对劲,活见鬼了真是。

#3


明白了,这里面的东西是循环产生的,所以ID会被换掉(因为不能保证唯一),你可以在客户端打开HTML,看看ID被换成了什么,一般是在前面加上父容器的ID

#4


这位大哥,真是不好意思,父容器的是datagrid,可是父容器的属性里找不到属于label的id,还有这个页面就是因为不能加载到实例,所以不能显示,还有什么办法没有?谢谢了!

#5


你把代码中使用这个ID的地方删掉
要使用添加的控件,你必须在父容器的Controls属性中获取

#6


你说对了,他的id显示是循环的,id="DataGrid1__ctl2_Label1",id="DataGrid1__ctl3_Label1",、、、、那不是没法判断了?

#7


例如你的DataGrid叫DataGrid1
DataGrid1.Items[0].Controls[0]应该是第0行的Label控件
DataGrid1.Items[0].Controls[0]应该是第0行的TextBox控件
你可以用编码的方式在运行期获取某一行的Label和TextBox的实例

#8


其实,我的本意只是这样:在数据显示以后我再多加了一列超级链接列,不过是这样,我要根据datagrid前面其中一列的值来判断这列加上去的超级链接列是不是有效,比如,datagrid一行数据里面,其中一字段是0,则这列超级链接列无效,如果是1,则超级链接有效。
然后我现在是把要判断的这列和超级链接列都做成了模板列。到aspx.vb里面去设置超级链接列的enabled的属性。

#1


你添加的必须说明成protected,不能是private
因为ASPX实际上是.vb中类的子类,所以必须让子类能够访问

#2


是的,我添加的说明是protected的
aspx:
<asp:TemplateColumn HeaderText="是否提交">
<ItemTemplate>
<asp:Label runat="server" ID="Label1" CssClass="class1" Text='<%# DataBinder.Eval(Container, "DataItem.is_submit") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="is_submited" CssClass="class1" Text='<%# DataBinder.Eval(Container, "DataItem.is_submit") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
aspx.vb:
Protected WithEvents is_submited As System.Web.UI.WebControls.Label
Protected WithEvents Label1 As System.Web.UI.WebControls.Label

不过就是说我没有实例,实在看不出哪里不对劲,活见鬼了真是。

#3


明白了,这里面的东西是循环产生的,所以ID会被换掉(因为不能保证唯一),你可以在客户端打开HTML,看看ID被换成了什么,一般是在前面加上父容器的ID

#4


这位大哥,真是不好意思,父容器的是datagrid,可是父容器的属性里找不到属于label的id,还有这个页面就是因为不能加载到实例,所以不能显示,还有什么办法没有?谢谢了!

#5


你把代码中使用这个ID的地方删掉
要使用添加的控件,你必须在父容器的Controls属性中获取

#6


你说对了,他的id显示是循环的,id="DataGrid1__ctl2_Label1",id="DataGrid1__ctl3_Label1",、、、、那不是没法判断了?

#7


例如你的DataGrid叫DataGrid1
DataGrid1.Items[0].Controls[0]应该是第0行的Label控件
DataGrid1.Items[0].Controls[0]应该是第0行的TextBox控件
你可以用编码的方式在运行期获取某一行的Label和TextBox的实例

#8


其实,我的本意只是这样:在数据显示以后我再多加了一列超级链接列,不过是这样,我要根据datagrid前面其中一列的值来判断这列加上去的超级链接列是不是有效,比如,datagrid一行数据里面,其中一字段是0,则这列超级链接列无效,如果是1,则超级链接有效。
然后我现在是把要判断的这列和超级链接列都做成了模板列。到aspx.vb里面去设置超级链接列的enabled的属性。