C# 行上的Gridview编辑回发隐藏Gridview

C# 行上的Gridview编辑回发隐藏Gridview,c#,asp.net,gridview,postback,datasource,C#,Asp.net,Gridview,Postback,Datasource,这是一种非常奇怪的行为,我不知道是什么导致了它。 基本上,我有一个aspx页面,其中有一个按钮,还有一个网格视图 按下按钮将从数据库获取数据到数据表,该数据表将用作网格视图的数据源 此gridview具有commandfield showeditbutton=“true” 一旦databind成功并且gridview有一些记录,我就按下edit按钮。编辑按钮在行编辑中有以下代码 GridView1.EditIndex = e.NewEditIndex; GridView1.Dat

这是一种非常奇怪的行为,我不知道是什么导致了它。 基本上,我有一个
aspx
页面,其中有一个
按钮
,还有一个
网格视图

按下
按钮
将从数据库获取数据到
数据表
,该数据表将用作
网格视图的
数据源

gridview
具有
commandfield showeditbutton=“true”

一旦
databind
成功并且
gridview
有一些记录,我就按下
edit按钮
。编辑按钮在
行编辑中有以下代码

    GridView1.EditIndex = e.NewEditIndex;
    GridView1.DataBind();
令人惊讶的是,按下
编辑按钮后,
girdview
被隐藏

当我再次按下
按钮时,它会将其恢复到编辑模式。奇怪的行为,知道吗

.aspx页面

<asp:Button ID="Button1" runat="server" Text="Button" 
        CssClass="info-button-flat" onclick="Button1_Click1" />
    <br /><br /><br />
    <asp:GridView ID="GridView1" runat="server" onrowediting="GridView1_RowEditing">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:CommandField ShowDeleteButton="True" />
        </Columns>
    </asp:GridView>
protected void Button1_Click1(object sender, EventArgs e)
    {
        string aPara= null;
        aPara= aUser.ID;
        clsDataConduit aConn = new clsDataConduit();
        aDataTable = new DataTable();
        aConn.AddParameter("@aPara", aPara);
        aDataTable = aConn.Return_aDataTable("an_user_sproc");
        GridView1.DataSource = aDataTable;
        GridView1.DataBind();
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {

        GridView1.EditIndex = e.NewEditIndex;
        GridView1.DataBind();
    }

GridView1\u行编辑中
不能重新绑定到任何数据源。只是
GridView1.DataBind()GridView1.DataSource=SomeSource,否则code>将不起作用

可能的解决方案:

将数据绑定代码移动到名为
BindData()
的方法:

并从按钮单击()调用此方法:

GridView1\u行编辑中
调用此方法:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindData();
}
您必须在更新基础数据源的位置处理
GridView1\u rowUpdate
。希望有帮助

protected void Button1_Click1(object sender, EventArgs e)
{
    BindData();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindData();
}