在DataGrid中嵌入服务器控件,你可以这样来绑定数据:
<ItemTemplate>
<asp:label id="abc" runat="server" Text='<%# DataBinder.Eval(Container, "mydata") %>'></asp:label>
<ItemTemplate>

解决方案 »

  1.   

    Dim i As Integer = 0
                For i = 0 To DataGrid1.Items.Count - 1
                    Dim l As Label
                    l = DataGrid1.Items(i).Cells(9).FindControl("lbl")
                    l.Text = "xxx"
                Next
      

  2.   

    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
                Dim l As Label
                l = e.Item.Cells(9).FindControl("lbl")
                l.Text = "xxx"
            End If    End Sub
      

  3.   

    楼上的好像这里有点小问题:Dim l as label 应该是这样吧!Dim l As Label()
    祝你成功!!!!!!!
      

  4.   

    这样写就没有问题了:
    public void Dgd_ItemDataBound(Object sender, DataGridItemEventArgs e)
    {
             Label lbl=(Label)e.Item.FindControl("abc");
             if(!(lbl == null) )//注意:一定要加上这句
             {
             lbl.Text="abcd";
             }
    }
      

  5.   

    另外,把Page_Load中的那段代码去掉。
      

  6.   

    建议你可以先看看quickstart 
    同时你可以使用2中方法来调用你的控件
    1:
    DataGrid1.Items(i).Cells(9).FindControl("lbl") 
    2:
    DataGrid1.Items(i).Cells(9).Controls[1]
      

  7.   

    把Page_Load中的那段代码去掉。
    因为,在Page_Load中,那段代码是找不到DataGrid中那个Label控件的。
    你可以这样试试:
    private void Page_Load(object sender, System.EventArgs e)
    {
    Label lbl=(Label)Dgd.FindControl("abc");
    if(lbl!= null) 
    {
    Response.Write("找到控件!");
    }
    else
    {
    Response.Write("没有找到控件!");
    }
    }