在运行时隐藏标签

use*_*989 1 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>
Run Code Online (Sandbox Code Playgroud)

我想动态隐藏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
        }
    }
Run Code Online (Sandbox Code Playgroud)

在这里,当我尝试调试代码时,它进入循环内部,但是我没有将对象引用设置为对象错误的实例.

UPDATE

如果我试试,

  HtmlGenericControl label = e.Item.FindControl("lbl1") as HtmlGenericControl;
            label.Visible = false;
Run Code Online (Sandbox Code Playgroud)

有用

Med*_*uil 6

将您的标签转换为asp:带有runat ="server"的标签

 <asp:label id="lbl1" runat="server">
Run Code Online (Sandbox Code Playgroud)

或者在编写时保留它并添加runat ="server"并在您的代码中

HtmlGenericControl label = e.Item.FindControl("lbl1") as HtmlGenericControl;
Run Code Online (Sandbox Code Playgroud)