我试图在转发器中隐藏标签。
<td>
<div>
<asp:Repeater ID="rpt1" runat="server"
OnItemDataBound="rpt1_ItemDataBound">
<HeaderTemplate>
<table>
<tr>
<td>
<div>
<label id="lbl1" runat="server">
<b>Project</b>
</label>
</div>
</td>
</tr>
</table>
</HeaderTemplate>
</asp:Repeater>
</div>
</td>
我想动态隐藏Label lbl1。
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
//IT COMES HERE
Label label = e.Item.FindControl("lbl1") as Label;
label.Visible = false;
// ERROR: OBJECT REFERENCE NOT SET TO AN INSTANCE OF AN OBJ
}
}
这里,当我尝试调试代码时,它会进入循环内部,但是会将对象引用设置为未设置为对象错误的实例。
更新
如果我尝试,
HtmlGenericControl label = e.Item.FindControl("lbl1") as HtmlGenericControl;
label.Visible = false;
它有效
答案 0 :(得分:6)
使用runat =&#34;服务器&#34;
将您的标签转换为asp:Label <asp:label id="lbl1" runat="server">
或者在你写的时候保留它并添加runat =&#34; server&#34;并在你的代码生成中
HtmlGenericControl label = e.Item.FindControl("lbl1") as HtmlGenericControl;
答案 1 :(得分:1)
如果你在谈论td
在你的aspx或ascx中
<td id="tdid" runat="server">
背后的代码
HtmlTableCell td=e.Item.FindControl("tdid") as HtmlTableCell ;