在运行时隐藏标签

时间:2015-02-25 21:58:04

标签: c# asp.net

我试图在转发器中隐藏标签。

<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;

它有效

2 个答案:

答案 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 ;
相关问题