我在后台里写  
      protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
           if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                Label labSignR = (Label)e.Item.FindControl("LabelSignRight");
                Label labSignW = (Label)e.Item.FindControl("LabelSignWrong");
                labSignR.Visible = false;
                labSignW.Visible = false;
             }
         }
然后总是找不到,labSignR的值是null
为什么会这样呢???

解决方案 »

  1.   

    检查Label名称是否拼写错误,还有你的Label是在ItemTemplate中的嘛???
      

  2.   

    检查了没有拼写错误。。前台是这样子写的
    </ItemTemplate>
            <tr><asp:Panel ID="PnAnswer1" runat="server">
                        <td align="left" colspan="4">                       <asp:LabelID="LabelSignRight"runat="server"Text="√"></asp:Label>
    <asp:Label ID="LabelSignWrong" runat="server" Text="×"></asp:Label>
     <strong>正确答案:<asp:Label ID="Label2" runat="server" Text='<%#Eval("answer").ToString() %>'></asp:Label>( 本题解释:<%#Eval("tips").ToString() %>)</strong></td>               
                       </asp:Panel>
                       </tr>
     </ItemTemplate>
      

  3.   

    你是放在Panel中,所以你首先找到Panel,然后再找这个Label
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
         if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
         {
               Label labSignR = (Label)e.Item.FindControl("PnAnswer1").FindControl("LabelSignRight");
               Label labSignW = (Label)e.Item.FindControl("PnAnswer1").FindControl("LabelSignWrong");
               labSignR.Visible = false;
               labSignW.Visible = false;
         }
    }还有之前的PnAnswer1这个Panel一开始你默认是Visible="false"了??
      

  4.   

    嗯嗯。。的确。。我把Label写在Panel外面就找到了。。~谢谢~
    新手一个,还是大意了。。~╮(╯_╰)╭