Telerik WPF带分页RadGridView如何获取所有分页的全量数据项
问题原因
RadGridView的Items集合仅包含当前分页可见的数据,是因为你将RadGridView绑定了RadDataPager的分页数据源,控件默认只加载当前页的渲染数据来优化性能,因此直接读取Gridview.Items只能拿到当前页数据。
解决方案
方案1:直接读取原始全量数据源(最推荐)
RadDataPager分页的前提是你已经将全量数据赋值给了RadDataPager.Source属性,直接复用你初始化分页时传入的全量集合即可,不需要从RadGridView中读取。
示例:
// 你初始化分页时的代码类似如下 List<User> allUserList = GetAllUsersFromDb(); radDataPager.Source = allUserList; // 需要取全量时直接用这个allUserList即可 list = allUserList;
方案2:从RadDataPager中读取全量数据源
如果无法拿到初始化时的原始集合,直接读取RadDataPager.Source属性转换为对应类型即可,该属性存储的是未分页的全量数据:
list = (radDataPager.Source as IEnumerable<User>).ToList();
方案3:获取经过过滤/排序后的全量数据
如果你对RadGridView做了列过滤、排序操作,需要获取处理后的全量数据,可通过RadGridView的ItemsSource对应的集合视图获取:
var pagedCollectionView = Gridview.ItemsSource as IPagedCollectionView; var allFilteredItems = pagedCollectionView.SourceCollection.Cast<User>().ToList(); list = allFilteredItems;
注意事项
不要尝试修改RadDataPager的PageSize为极大值来获取全量数据,该操作会触发UI重新渲染全量数据,数据量大时会导致界面卡顿。
内容的提问来源于stack exchange,提问作者abdou93
相关产品推荐
相关产品推荐

