【问题标题】:GridView bound to Datatable- Paging does not work properly绑定到 Datatable 的 GridView - 分页无法正常工作
【发布时间】:2016-09-19 21:59:34
【问题描述】:

我设置了一个网络表单,单击按钮可解析 .txt 文件并将其放入数据表中。当解析结束时,数据表绑定到gridview。我尝试添加分页,因为我得到了大量的行,但它似乎无法正常工作。每当我点击下一页时,网格就会消失,为了让它再次出现在正确的页面上,我需要再次点击该按钮。

我尝试将以下代码添加到源代码中:

<asp:GridView ID="GridView1" Runat="server" 
     AutoGenerateColumns="true"
     AllowPaging="True" OnPageIndexChanging="OnPageIndexChanging" >

还有这一点:

protected void OnPageIndexChanging(object sender, EventArgs e)
{
  GridView1.PageIndex = e.NewPageIndex; 
  GridView1.DataBind();
}

但它似乎并没有改变任何东西。知道我做错了什么吗?

【问题讨论】:

  • 尝试添加特定的页面大小,如PageSize="10"
  • 我做了,我也可以选择相应地更改页面大小,但仍然不起作用。

标签: c# asp.net gridview datatable


【解决方案1】:

尝试在 GridView 中添加 OnPageIndexChanging 事件

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true"
OnPageIndexChanging="OnPageIndexChanging" PageSize="5">

还有你的 aspx.cs 代码。尝试在 Page_Load 事件上绑定 Gridview。

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

 protected void Page_Load(object sender, EventArgs e)
  { this.BindGrid();}

 private void BindGrid()
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT * From [dbo].[your table] "))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                }
            }
        }
    }

【讨论】:

  • 如果我添加 AutoGenerateColumns="false" 网格视图甚至不会加载。我尝试了你的建议,没有用。
  • 我认为您的 Page_Load 事件无法填充页面上的数据已更改尝试在 Page_Load 事件上加载 Gridview。
  • 我添加了以下内容: If( GridView1.Rows.Count>0) LogGrid(); LogGrid 是创建数据表并填充它的函数。这解决了问题,但是 - 我不希望这个功能在每个页面加载时都起作用。必须有另一种选择,不是吗?
  • @Freebirdy 像我在回答中发布的那样写下您的活动。
  • 这对您有什么帮助?我不想在每个页面加载时重新加载数据表事件。
【解决方案2】:
protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        //here yo have to assign datasource 
       //Some thing like this
       ///GridView1.DataSource=DataTable;
        GridView1.DataBind();
    }

【讨论】:

  • 已经这样做了,因为 DataTable 没有保存在按钮单击功能之外,所以不起作用。
猜你喜欢
  • 2014-09-21
  • 2013-08-22
  • 2023-03-04
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多