【问题标题】:GridView don't Show on GridView_PageIndexChangingGridView 不显示在 GridView_PageIndexChanging
【发布时间】:2016-10-05 01:22:40
【问题描述】:

我有一个 ViewStock 面板,我在其中查看来自数据库的网格视图中的股票,并通过代码查看 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”时,面板空白,就像我上传的图片中一样 See this Image,然后我单击链接按钮,再次将我重定向到面板并打开页面“2”具有有效数据的网格视图。

如何解决这个问题?

【问题讨论】:

  • 现在你可以再次聊天了 ;-)

标签: c# asp.net gridview paging


【解决方案1】:

你可以尝试使用:

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)

【讨论】:

    【解决方案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();
      }
      

    只需进行这三个小改动即可。我已经试过了,效果很好。

    【讨论】:

    • 谢谢你,它就像一个魅力! :)
    【解决方案3】:

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

    ViewState["ds"] = dtStockView

    PageIndexChanging这样写

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

    希望对你有帮助

    【讨论】:

    • 它不起作用兄弟,同样的问题。我脑海中的场景是,点击 pagechangeing 事件时,它会重新加载页面,但不会打开这个 viewstock 面板。有3个面板。 (1)添加股票(2)更新股票(3)查看股票,这就是我在页面加载时的页面加载“ if(!ispostback){ panel_updatestock.visible = false; panel_ViewStock.visible = false; }
    • 我也尝试了修改后的答案,但是没有用。但仍然感谢您的时间和帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2012-06-18
    • 2012-10-04
    相关资源
    最近更新 更多