C# 使用数据集的gridview分页
我有一个ASP.NET web应用程序(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
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,可以将分页的负担转移到数据层,页面的加载速度会更快