- 当数据量非常大的时候,采用ListView内置的分页功能,效率会很低,因为ListView内置的分页功能是当每次请求数据的时候都将所有的数据读出然后选择页面中所请求的数据,因此改用以下方法来提高分页效率。以下方法的原理是:在数据库中进行分页操作,根据所请求的数据来直接将数据库中的数据条数取出,这样每次请求数据的时候,就减轻了服务器的负担。
- 首先添加数据集查询方法:GetPagedData(在数据库中取得数据分页的方法)和QueryCount(查询所有数据的行数的方法)
GetPagedData:
select * from
(
SELECT Id, Name, Age, Sex,Row_Number() over(order by id) row_number FROM dbo.T_Persons
) t
where t.row_number>@startRowIndex and t.row_number<=@startRowIndex+@maximumRows
其中startRowIndex和maximumRows参数需要手动在Parameters属性中设置 QueryCount:
SELECT COUNT(*) FROM T_Persons - 配置ObjectDataSource,让ListView自动生成Template,然后修改ObjectDataSource的EnablePaging="True",SelectCountMethod设置为取得行数的方法(SelectCountMethod="QueryCount"),删除<SelectParameters>内容。
- 在<ListView>后面添加<DataPager>:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1">
<Fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="True" ShowNextPageButton="False" FirstPageText="首页" />
<asp:NumericPagerField ButtonCount="5" ButtonType="Link" />
<asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="True" ShowPreviousPageButton="False" LastPageText="末页" />
</Fields>
</asp:DataPager>