GridView 不显示在 GridView_PageIndexChanging 上

问题描述 投票:0回答:3

我有一个面板 ViewStock,我可以在其中从数据库查看 gridview 中的股票,并通过代码进行 DataBind() 操作。允许分页并在html中的gridview标签中创建事件“OnPageIndexChanging”,实现上面定义的代码并在事件中分页如下:

HTML:

<asp:Panel ID="Panel_StockView" runat="server">

    <asp:GridView ID="GridView_Stock" AllowPaging="true" OnPageIndexChanging="GridView_PageIndexChanging" runat="server"></asp:GridView>

</asp:Panel>

C#代码:

protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e)
{
    using(SqlConnection con = new SqlConnection(cs))
    {
        //Sql command here
        /sql adapter and filled datatable
        sdaStockView.Fill(dtStockView);
        GridView_Stock.DataSource = dtStockView;
        GridView_Stock.DataBind();
    }
}

现在实现了分页

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView_Stock.DataBind();
    GridView_Stock.PageIndex = e.NewPageIndex;
}

它确实有效,但部分有效。它进行分页并正确处理数据。但是,问题是当我单击页面“2”时,面板会空白,就像我上传的图片查看此图片,然后我单击链接按钮,再次将我重定向到面板并打开页面“2”具有有效数据的网格视图。

如何解决这个问题?

c# asp.net gridview pagination
3个回答
2
投票
  1. 将GridView与数据绑定的逻辑提取到一个新方法中。您可以将其称为

    BindData()
    ,例如:

    private void BindData()
    {
        using (SqlConnection con = new SqlConnection(cs))
        {
            sdastockview.fill(dtstockview);
            gridview_stock.datasource = dtstockview;
            gridview_stock.databind();
        }
    }
    
  2. LinkButton_Panel_ViewStock_Click
    内调用此方法来填充
    GridView
    :

    protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e)
    {
        this.BindData();
    }
    
  3. 最后再次调用,在分页时重新填充

    GridView

    protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView_Stock.PageIndex = e.NewPageIndex;
        this.BindData();
    }
    

只要做这三个小改变就可以了。我已经在我这边尝试过了,效果很好。


0
投票

填写

DataSet
后,将您的
ViewState
保存在
LinkButton_Panel_ViewStock_Click
上,就像这样

DataSet

ViewState["ds"] = dtStockView

中这样写

PageIndexChanging

希望这对你有帮助


0
投票

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e) { panel_ViewStock.visible = true; GridView_Stock.PageIndex = e.NewPageIndex; GridView_Stock.DataSource = ViewState["ds"] as DataSet GridView_Stock.DataBind(); }

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.