基本上,如果您在ListView
和 上启用分页ObjectDataSource
,数据源会将当前页码以及页面大小传递给您的数据提供者类(您在 中配置的那个ObjectDataSource
)。
这是一个工作示例:
http://netpl.blogspot.com/2009/04/how-to-controll-aspnet-listview-page.html
具体来说,看一下数据提供者类,PersonDataSource
.
public class PersonDataSource
{
public IEnumerable<Person> Retrieve( int StartRow, int RowCount )
{
return DataModel.Instance.Persons.Skip( StartRow ).Take( RowCount );
}
public int CountItems()
{
return DataModel.Instance.Persons.Count;
}
}
您可以自由实现提供程序,这意味着您可以从内存、数据库中检索您的对象,您可以使用 ORM 或创建一个SqlCommand
. 没有限制。
我不会在应用程序级别实现分页,而是创建一个分页查询。应用程序级别的分页意味着您从数据库中检索数据并在应用程序级别进行过滤,这通常在性能方面比在数据库级别进行过滤更差。
如果您想制作自己的分页查询,那么至少有几种方法可以做到这一点,使用 ROW_NUMBER 或不使用。