为什么第一次点击时不显示GridView EditItemTemplate?

时间:2010-01-05 23:43:33

标签: c# asp.net gridview

我有一个带有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中的内容。

但是,如果再次单击“编辑”按钮,则会显示“文本框”。

任何想法如何通过第一次点击获得它?

1 个答案:

答案 0 :(得分:3)

grid.EditIndex = e.NewEditIndex;
grid.DataBind();