建立了个Repeat如下:
<asp:repeater id="daList" Runat="server">
...
<ItemTemplate>
   <table>
    <tr>
    <td>
      <asp:Label ID="lb" Runat="server">aaaa</asp:Label>
    </td>
    </tr>
   </table>
</ItemTemplate>
...
</asp:repeater>CS中有个事件想把中间的Lable隐掉,代码如下:
private void hideLable()

   ...
   lb.Visible=false;
   ...
}然后只要调用这个,就出现如下错误:未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
行 90:  lb.Visible=false;  <-指向此条
行 91:  }请问是什么问题?

解决方案 »

  1.   

    private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    Label TxtName2 = (Label) e.Item.FindControl("lb");
                               TxtName2.Visible = false;
    }
      

  2.   

    楼上正解
    因为你的Label是嵌入在Repeater控件中的,编译器不能检测到。
      

  3.   

    ItemDataBound 是一个事件,页面打开的时候运行的.你选择Repeater后的属性-->事件可以找到它.
      

  4.   

    很感谢.
    不过还是出错了:
    未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 139: {
    行 140: Label TxtName2 = (Label) e.Item.FindControl("lb");
    行 141: TxtName2.Visible = false; 
      

  5.   

    private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    Label lb = (Label) e.Item.FindControl("lb");
    if(lb != null)
    {
         lb.Visible = false;
    }
    }
      

  6.   

    我加了个else 果真这个地方并没有找到lb这个label控件.怎么办?