关于怎样获取DevExpress GridView过滤后或排序后的数据集问题(转)
Posted xihong2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于怎样获取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
版权声明:本文为博主原创文章,转载请附上博文链接!
以上是关于关于怎样获取DevExpress GridView过滤后或排序后的数据集问题(转)的主要内容,如果未能解决你的问题,请参考以下文章
DevExpress下的gridView中,怎样要把一个string数据保存到表的一个单元格cell中