<asp:DataList ID="DataList1" runat="server">
     <ItemTemplate >
         <div class="postCount">
             <asp:Label ID="lblCount" runat="server" Text="Label"></asp:Label>
         </div>
     </ItemTemplate>
 </asp:DataList>我用DataList1.FindControl("DataList1")获取label,但是报错,请问怎样获取模板里面的label控件呀?

解决方案 »

  1.   

    label是在<ItemTemplate >这里面的,所以你得在ItemTemplate绑定事件里根据事件源,也就是每一个ItemTemplate里面用FindControl找
      

  2.   

       protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            Label lblCount= (Label)e.Item.FindControl("lblCount");
        }
      

  3.   


    还想还不行,protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            Label lblCount = (Label)e.Item.FindControl("lblCount");
            lblCount.Text = "11";
        }结果页面上什么也没有怎么给这个label赋值呀???
      

  4.   

     protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            Label lab = (Label)e.Item.FindControl("lblCount");
            lab.Text = "222";
        }
    试一下
      

  5.   

    datalist2绑定数据源后可以看到
      

  6.   

    绑定完数据之后在PreRender事件中写即可for(int i=0;i<DataList2.Items.count;i++)
    {
    label aa=DataList2.item[i].FindControl("lblCount") as label ;
    aa.text="aaa";}
      

  7.   

    protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
      {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
    {        
              Label lbl = (Label)e.Item.Controls[0].FindControl("lblCount");          
    }