У меня есть GridView с EditItemTemplate, к которому я привязываю словарь
<asp:GridView runat="server" ID="VariableList" ShowHeader="false" AutoGenerateColumns="false" OnRowEditing="VariableList_RowEditing">
<Columns>
<asp:BoundField ReadOnly="true" DataField="Key" />
<asp:TemplateField ItemStyle-Width="300">
<ItemTemplate>
<asp:Label runat="server" id="VName" Text='<%# Eval("Value") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="VValue" Text='<%# Eval("Value") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
Когда я нажимаю кнопку «Редактировать», запускается событие RowEditing (проверяется отладчиком), в котором я устанавливаю GridViews EditIndex:
protected void VariableList_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView grid = sender as GridView;
if (grid == null)
{
return;
}
grid.EditIndex = e.NewEditIndex;
}
Если я установлю точку останова на сетке .EditIndex = e.NewEditIndex; в строке устанавливается значение 0, что является первым правильным пунктом.
Однако asp: TextBox не отображается. Он показывает, что находится в ItemTemplate, а не в EditItemTemplate.
Однако, если я снова нажму на кнопку «Редактировать», появится текстовое поле.
Есть идеи, как получить его с первого клика?