我认为我的问题标题很简单。
感谢任何帮助..
答案 0 :(得分:3)
如果是你可以做的BoundField
gv.Rows[1].Cells[1].Text;
如果是TemplateField,则必须获得具有所需值的控件。
Label L = gv.Rows[1].FindControl("yourcontrolId") as Label;
L.Text;
答案 1 :(得分:2)
使用BoundField并且在只读模式下,您可以使用GridView1.Rows[x].Cells[x].Text
但是在编辑模式下,您必须使用Controls集合来获取控件的引用。此方法返回Control
对象。
Control control=GridView1.Rows[x].Cells[x].Controls[0]; // later you may cast it to appropriate control class.
如果使用模板字段,则必须从FindControl
集合中发出Cells
方法,以根据其ID
获取控件的引用。您也可以使用Cells[x].Controls
收藏。
Control control=GridView1.Rows[x].Cells[x].FindControl("ID_Of_Control"); // later you may cast it to appropriate control class.
编辑:
也可能在Templatefields上有一个或多个具有相同名称/ ID的控件。在这种情况下,您无法使用FindControl
方法。
示例:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
现在获取Button并从第2行和第1个单元格更改其文本:
Button btn = GridView1.Rows[1].Cells[0].Controls[1] as Button ;
if(btn!=null)
btn.Text = "Hello";