• 关于怎样获取DevExpress GridView过滤后或排序后的数据集问题(转)


    GridView用自带的过滤功能过滤数据后,想要获取过滤后的数据集,有两种方式:

    一、笨办法就是循环遍历GridView,根据gridView.GetRow()或者gridView.GetDataRow()(该方法返回DataRow类型,使用于数据源是DataTable)去获取指定handle对应的数据对象。

    1、若GridControl绑定的数据源是List类型,可以调用以下方法

    /// <summary>
    /// 获取GridView过滤或排序后的数据集
    /// </summary>
    /// <typeparam name="T">泛型对象</typeparam>
    /// <param name="view">GridView</param>
    /// <returns></returns>
    public IEnumerable<T> GetGridViewFilteredAndSortedData<T>(DevExpress.XtraGrid.Views.Grid.GridView view) where T : class
    {
    var list = new List<T>();
    for (int i = 0; i < view.RowCount; i++)
    {
    if (view.IsGroupRow(i))
    continue;
    var entity = view.GetRow(i) as T;
    if (entity == null)
    continue;
    list.Add(entity);
    }
    return list;
    }


    2、若GridControl绑定的数据源是DataTable类型,可以调用以下方法:
    <pre name="code" class="csharp"> /// <summary>
    /// 获取GridView过滤或排序后的数据集
    /// </summary>
    /// <param name="view">GridView</param>
    /// <returns></returns>
    public DataTable GetGridViewFilteredAndSortedDataToDataTable(DevExpress.XtraGrid.Views.Grid.GridView view)
    {
    DataTable _dt = view.GridControl.DataSource as DataTable;
    if (_dt == null)
    return null;
    DataTable dt = _dt.Clone();
    for (int i = 0; i < view.RowCount; i++)
    {
    if (view.IsGroupRow(i))
    continue;
    var dr = view.GetDataRow(i);
    if (dr == null)
    continue;
    dt.Rows.Add(dr.ItemArray);
    }
    return dt;
    }

    第二种方法:估计大伙很难找到,DevExpress 的GridView竟然提供了相应的方法,但是奇怪的是编译器竟然没有显示,就是在GridView的基类BaseView中提供了DataController这个对象,查看了这个属性后发现竟然真的被屏蔽了,EditorBrowsable竟然是Never状态(我也表示一脸懵逼)


     当然,屏蔽了,不代表他没有这个属性,那就一脸懵逼的使用吧,DataController提供一个获取过滤后和排序后的数据集的方法:GetAllFilteredAndSortedRows()

    为了不每次都懵逼的去这样直接调用,最好还是写一个公用方法去调用吧

    <pre name="code" class="csharp"> /// <summary>
    /// 获取GridView过滤或排序后的数据集
    /// </summary>
    /// <param name="view"></param>
    /// <returns></returns>
    public System.Collections.IList GetGridViewFilteredAndSortedData(DevExpress.XtraGrid.Views.Grid.GridView view)
    {
    return view.DataController.GetAllFilteredAndSortedRows();
    }

    ---------------------
    作者:涛神-Dev
    来源:CSDN
    原文:https://blog.csdn.net/u012097590/article/details/52777437
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Automatic Setup of a Humanoid
    SLAM——视觉里程计(一)feature
    JSP和EL和JSTL
    rework-发出你的心声
    bootstrap单选框复选框的使用
    bootstrap输入框组
    vue中改变数组或对象,页面没做出对应的渲染
    bootstrap面板的使用
    bootstrap列表组的使用
    bootstrap表格的使用
  • 原文地址:https://www.cnblogs.com/xihong2014/p/10757369.html
Copyright © 2020-2023  润新知