如何在DataGrid中显示大量行
本文关键字:显示 DataGrid | 更新日期: 2023-09-27 18:00:59
我有一个WPF DataGrid,我正在从DataTable填充它。到目前为止,我从未有过超过200条左右的记录,所以DataGrid的填充非常完美。但是,我现在必须添加对更大数据库的支持。因此,我想向用户显示200条记录,然后让他按下某种按钮,显示下一个200条等等。这样我可以更快地加载DataGrid。
对此,最好的方法是什么?我对ASP.NET中的分页有一些经验,但在WPF中从未有过这样的要求。
这是我的DataGrid代码:
<DataGrid Name="dgResults"
IsReadOnly="True"
AutoGenerateColumns="True"
AllowDrop="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserSortColumns="False"
Margin="15,10,10,10"
Visibility="Collapsed"
ItemsSource="{Binding}"/>
绑定:
dgResults.DataContext = dtResults.AsDataView();
我认为您需要通过实现分页来解决数据访问层中的问题
使用LinqToSql
var query = yourPersistenceManager.Context<YourTable>();
-- apply filters
query = query.Skip(pageNumber * pageSize).Take(pageSize);
或者,如果使用ADO.Net,您可以使用类似这样的通用分页查询(在oracle中实现(
select * from
(
select yourTable.*, rownum row_number from cc1customer
where rownum <= pageSize*pageNumber
) where row_number > (pageNumber -1) * pageSize
sqlserver上的类似SELECT TOP
和。。。
通常建议使用ORDER BY
在页面之间获取一致的数据
在用户界面层中,您必须在WPF数据网格上手动实现分页
以下是一篇有用的文章,它可能是有用的
回避问题的一种方法是为用户提供一些搜索条件,用户可以根据这些条件查找特定的结果。除非迫不得已,否则用户通常不会浏览数千个结果。你可以通过只返回任何给定搜索的前X个结果来利用这一点。您可以通过使用TSQL SELECT TOP 200 *
或使用linq .Take(200)
来限制查询返回的结果数量