我在datagrid里用TemplateColumn生成列,在TemplateColumn里的<ItemTemplate>里引用了一个label控件,但是我在page_load事件里想引用该label是出错:未将对象引用到对象实例.(代码见下面)
html代码:
<asp:TemplateColumn ItemStyle-Width="100px" ItemStyle-Height="200px">
<ItemTemplate>
<table cellpadding="0" cellspacing="0" border="0" width="100" height="200">
<tr><td height="150" align="center">
<asp:Image ID="image1" Runat="server"></asp:Image></td>
</tr>
<tr><td height="50" align="center">
<asp:Label ID="label3" Runat="server"></asp:Label></td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
page_load代码:
label3.text="dddddd"

解决方案 »

  1.   

    引用模板中的空间,要使用datagrid的findcontrol方法,找到空间,具体你可以在baidu中,查找findcontrol的用法
      

  2.   

    http://www.oia.com.cn/Web/CSDN/asppost2/web18118.htm
      

  3.   

    如果你能确定要处理的数据行数,列数,和控件的真实顺序:
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].Controls[key];如果你能确定要处理的数据行数,知道列,要查找的控件有确定的唯一命名:
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].FindControl("ID");确定的唯一命名:
    如果你能确定要处理的数据行数,列数,和控件的真实顺序:
    Label lab1=(Label)DataGrid1.FindControl["ID"]; 这样效率低,而且容易出错
      

  4.   

    如果你能确定要处理的数据行数,列数,和控件的真实顺序:
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].Controls[key];如果你能确定要处理的数据行数,知道列,要查找的控件有确定的唯一命名:
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].FindControl("ID");确定的唯一命名:
    如果你能确定要处理的数据行数,列数,和控件的真实顺序:
    Label lab1=(Label)DataGrid1.FindControl["ID"]; 这样效率低,而且容易出错
      

  5.   

    行的,另外请确定你的DataGrid的 ViewState已启用
      

  6.   

    可以用findcontrol找到这个控件的ID,然后再使用
      

  7.   

    要记得每次FIND之前 记得重新绑定
      

  8.   

    上面前辈们所说的方法都是可以的:如下:
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].Controls[key];
    Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].FindControl("ID");不过要在ItemDataCreate或ItemDataBinder方法里面写才有用