С 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.
РЕДАКТИРОВАТЬ:
Также возможно, что в полях шаблонов может быть один или несколько элементов управления с одинаковым именем / идентификатором.В этом случае вы не можете использовать метод 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";