You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过XceedDataGridWrapper获取DataGrid当前可见数据?

获取Xceed DataGrid筛选后显示项的简便方法

嘿,刚好我对Xceed的DataGrid控件有不少实践经验,你想要的这种获取用户筛选后仅显示的项的需求,其实有非常直接的解决方案,完全可以实现类似你期望的GridWrapper.CurrentItems的用法!

核心思路:利用Xceed DataGrid内置的视图集合

Xceed的DataGridControl本身就维护了经过筛选、排序、分组后的显示项集合,关键是要从你的XceedDataGridWrapper里拿到这个集合。具体分两种情况:

1. 如果你的Wrapper已经暴露了内部的DataGridControl实例

假设你的XceedDataGridWrapper有一个类似InnerGrid的属性,指向封装的DataGridControl,那直接通过它的View.Items就能拿到当前显示的所有项:

// 替换YourDataType为你实际的实体类型
var visibleItems = GridWrapper.InnerGrid.View.OfType<YourDataType>().ToList();

View.Items返回的就是用户操作筛选后最终显示在网格里的项,完全符合你的需求。

2. 如果Wrapper没有暴露内部控件,给它添加一个CurrentItems属性

如果你的XceedDataGridWrapper是自定义封装的,没有对外暴露内部的DataGridControl,那可以直接在Wrapper类里添加一个CurrentItems属性,把底层的显示项暴露出来:

public class XceedDataGridWrapper
{
    // 假设_innerGrid是Wrapper内部维护的DataGridControl实例
    private DataGridControl _innerGrid;

    // 添加你想要的CurrentItems属性
    public IEnumerable<object> CurrentItems
    {
        get
        {
            // 返回筛选后的显示项,如需强类型可自行转换
            return _innerGrid.View.Items.Cast<object>();
        }
    }

    // 其他Wrapper逻辑...
}

这样你就可以像最开始期望的那样直接调用:

var dataContext = GridWrapper.CurrentItems;

额外说明

  • View.Items会自动同步用户的筛选、排序、分组操作,每次用户修改筛选条件后,这个集合都会实时更新为当前显示的项。
  • 如果需要强类型集合,记得用OfType<YourModel>()代替Cast<object>(),避免类型转换异常。

内容的提问来源于stack exchange,提问作者AidanH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:56:38