我有一个带有EditItemTemplate的GridView,我绑定了一个Dictionary
<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>
当我单击Edit按钮时,会触发RowEditing事件(使用调试器验证),我在其中设置GridViews EditIndex:
protected void VariableList_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView grid = sender as GridView;
if (grid == null)
{
return;
}
grid.EditIndex = e.NewEditIndex;
}
如果我在grid.EditIndex = e.NewEditIndex上设置断点; line,它将值设置为0,这是第一个正确的项目。
然而,asp:TextBox没有显示。它显示了ItemTemplate中的内容,而不是EditItemTemplate中的内容。
但是,如果再次单击“编辑”按钮,则会显示“文本框”。
任何想法如何通过第一次点击获得它?
答案 0 :(得分:3)
grid.EditIndex = e.NewEditIndex;
grid.DataBind();