【问题标题】:Gridview on rowediting postback hides the Gridview行编辑回发上的 Gridview 隐藏了 Gridview
【发布时间】:2013-12-25 23:46:16
【问题描述】:

这是一个非常奇怪的行为,我不知道是什么原因造成的。 基本上,我有一个aspx 页面,其中有一个button 和一个gridview

按下button 将从数据库中获取数据到datatable 中,该datatable 将用作gridviewdatasource

这个gridviewcommandfield showeditbutton="true"

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

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

令人惊讶的是,在按下edit button 后,girdview 被隐藏了。

当我再次按下button 时,它会将其带回编辑模式。奇怪的行为,有什么想法吗?

.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>

.cs 页面

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();
    }

【问题讨论】:

    标签: c# asp.net gridview postback datasource


    【解决方案1】:

    GridView1_RowEditing 中,您没有重新绑定到任何数据源。除非您设置GridView1.DataSource = SomeSource;,否则只有GridView1.DataBind(); 不起作用

    可能的解决方案:

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

    public void BindData()
    {
        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();
    
    }
    

    并从 Button_Click() 调用此方法:

    protected void Button1_Click1(object sender, EventArgs e)
    {
        BindData();
    }
    

    GridView1_RowEditing调用这个方法:

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

    您必须处理GridView1_RowUpdating,您将在其中更新基础数据源。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多