如何将分页应用于数据集?

如何将分页应用于数据集?

问题描述:

如何将分页应用于数据集?我有一个方法,我从数据集动态建立一个表。查询我从中获取数据集的数据库不是问题,但是从数据集迭代数据行很慢。如何将分页应用于数据集?

在加载包含大量数据行的页面时提高性能我想应用分页功能。

一个很好的特性是用户可以设置页面大小(每页显示多少行)。

+0

您既可以想看看DataPager控件:http://msdn.microsoft.com/en-us/library/system.web.ui .webcontrols.datapager.aspx或通过存储过程分页。您甚至可以在页面上维护页面,开始索引和页面大小,并为数据集填充一部分数据。 – 2010-05-11 12:16:15

如果您的数据是单个DataTable,那么您可以使用AsEnumerable()扩展方法。这将以IEnumerable集合的形式返回数据。然后,您可以使用LINQ扩展方法.Skip()和.Take()。

IEnumerable<DataRow> MyDataPage = MyDataTable.AsEnumerable().Skip(100).Take(10); 

上面的代码将使您的行101至MyDataTable的110,这将是可以绑定就像一个数据表IEnumerable集合。如果你需要的是一个实际的数据表,你可以叫CopyToDataTable()这样的:

DataTable NewDT = MyDataPage.CopyToDataTable(); 

更详细的信息,请here

你可以把一个GridView控件来显示数据,并使用其寻呼能力: http://msdn.microsoft.com/en-us/library/5aw1xfh3%28v=VS.80%29.aspx

+0

是的,但是在我的公司我们不使用gridview,listview,dataview,....等web控件。我们通常在代码隐藏中手动和动态地创建表。 – 2010-05-12 06:14:07

Linq是最好的选择。

ROW_NUMBER()也是SQL服务器的选项2005

+0

这也可以在SQL Server 2008中? – 2010-05-12 06:11:06

+0

@EasyDot:当然。 – 2012-01-05 09:38:55