我在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"
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"
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"]; 这样效率低,而且容易出错
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"]; 这样效率低,而且容易出错
Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].Controls[key];
Label lab1=(Label)DataGrid1.Rows[index].Cell[ind].FindControl("ID");不过要在ItemDataCreate或ItemDataBinder方法里面写才有用