C# 使用数据集的gridview分页

C# 使用数据集的gridview分页,c#,asp.net,gridview,dataset,pagination,C#,Asp.net,Gridview,Dataset,Pagination,我有一个ASP.NET web应用程序(C#),可以从数据源获取一些信息,并将其显示在gridview中。我想启用分页,但由于某些原因,分页无法工作。我在网上做了一些研究,发现如果使用数据集,分页的方式会有所不同。当我点击一个页码时,它会刷新,并说没有可显示的记录。我在按钮的单击功能中调用此函数: bindGrid(cmd); 以下是我的绑定方法: private void bindGrid(OracleCommand comm) { Oracl

我有一个ASP.NET web应用程序(C#),可以从数据源获取一些信息,并将其显示在gridview中。我想启用分页,但由于某些原因,分页无法工作。我在网上做了一些研究,发现如果使用数据集,分页的方式会有所不同。当我点击一个页码时,它会刷新,并说没有可显示的记录。我在按钮的单击功能中调用此函数:

        bindGrid(cmd);
以下是我的绑定方法:

    private void bindGrid(OracleCommand comm)
    {
        OracleDataAdapter adapter = new OracleDataAdapter(comm);
        DataSet ds = new DataSet();

        ds.Tables.Add("Results");
        adapter.Fill(ds.Tables["Results"]);

        grd.DataSource = ds;
        grd.DataBind();
    }
分页方法:

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

我应该如何使用数据集进行分页?有人能帮忙吗?

而不是在分页方法调用
bindGrid()
中使用
grd.DataBind()
。或者最好在分页方法调用中使用一些内置的“业务对象”进行数据绑定,如而不是
grd.DataBind()
。或者最好使用一些内置的“业务对象”进行数据绑定,如

您还需要获取数据:)

因此,与此相反:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;
    grd.DataBind();
}
你应使用:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;

    //Create command
    bindGrid(comm);

}

您还需要获取数据:)

因此,与此相反:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;
    grd.DataBind();
}
你应使用:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;

    //Create command
    bindGrid(comm);

}

进行分页的最简单方法是在GridView中设置AllowPaging=“yes”,而不在代码中执行任何操作。GridView将自己分页浏览其数据集。不要重新绑定


这对于小数据集来说很好,但对于电话簿来说就不太好了。正如Tadas所说,ObjectDataSource是自己在服务器端处理分页的方式。使用ObjectDataSource,您根本不会进行数据绑定;控件处理这个问题。但是,您确实需要在对象上提供一个Select方法(通常是静态的),并且它需要具有第一行和页面大小的参数(在ObjectDataSource上将这些设置为属性)。您还需要实现一个Count方法来返回完整的数据集大小;否则分页将无法工作。通过这种方式使用ObjectDataSource,您可以将分页的负担转移到数据层,页面的加载速度会快得多。

进行分页的最简单方法是在GridView中设置AllowPaging=“yes”,而不在后面的代码中执行任何操作。GridView将自己分页浏览其数据集。不要重新绑定

这对于小数据集来说很好,但对于电话簿来说就不太好了。正如Tadas所说,ObjectDataSource是自己在服务器端处理分页的方式。使用ObjectDataSource,您根本不会进行数据绑定;控件处理这个问题。但是,您确实需要在对象上提供一个Select方法(通常是静态的),并且它需要具有第一行和页面大小的参数(在ObjectDataSource上将这些设置为属性)。您还需要实现一个Count方法来返回完整的数据集大小;否则分页将无法工作。通过这种方式使用ObjectDataSource,可以将分页的负担转移到数据层,页面的加载速度会更快