在GridView控件没有加入模版的时候,可以很容易得到某行,某列的值.
如:
e.Row.Cells[3].Text //就是要获得当前选定行的第四个单元中的内容.我这里是把这行代码放到了OnRowDataBound事件处理程序中的.
但要是对这列加入了TemplateField,如下:
<asp:TemplateField HeaderText="商品名称">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ModelName") %>'
Width="85px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ModelName") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="95px" />
</asp:TemplateField>
在这个时候,要是再按照前面的方法获取值,就会获得空值.此时就要用到FindControl了应按下列方法获得值:
Label lbl1 = (Label)e.Row.FindControl("Label1");//这里要是ItemTemplate中的id,而不是EditItemTemplate的id
string ss = lbl1.Text;
通过这样就可以正确的得到想要的值.
本文介绍在ASP.NET GridView控件中如何正确地从模板字段(TEMPLATEFIELD)获取单元格值,包括在不同模板(如ItemTemplate和EditItemTemplate)中使用FindControl方法来定位特定控件。
1994





