关于怎样获取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下拉框的再次研究
原文:DevExpress gridview下拉框的再次研究 前几天写了一篇关于研究DevExpress gridview下拉框的随笔(DevExpress gridview下拉框repository ...
- DevExpress GridView 整理(转)
DevExpress GridView 那些事儿 1:去除 GridView 头上的 "Drag a column header here to group by that column&q ...
- DevExpress GridView 那些事儿
1:去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Desig ...
- DevExpress GridView 整理
1:去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Desig ...
- js获取给定月份的N个月后的日期
1.在讲js获取给定月份的N个月后的日期之前,小颖先给大家讲下getFullYear().getYear()的区别. ①getYear() var d = new Date() console.log ...
- Devexpress Gridview 自定义汇总CustomSummaryCalculate(加权平均)
Devexpress Gridview 提供了简单的求和,平均等方法,复杂的汇总方法则需要自定义,使用gridview 的CustomSummaryCalculate 事件,根据官网的文档及各论坛案例 ...
- cxGrid实现取消过滤和排序后定位到首行(单选和多选)
cxGrid实现取消过滤和排序后定位到首行(单选和多选) 原创 2013年10月06日 18:42:24 2107 DataContoller中的函数FocusedRecordIndex没有反应,Fo ...
- Mysql 获取成绩排序后的名次
其实就是输出mysql的排序后的行号 RT:获取单个用户的成绩在所有用户成绩中的排名 可以分两步: 1.查出所有用户和他们的成绩排名 ) as rowNo from t_user, () ) ...
- vue单页应用中,使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据。
使用VUE开发单页项目时遇到这样的问题,mounted中使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据.我以为是因为我路由用的push导致的,改成repla ...
随机推荐
- 常用的数组函数-S
header('content-type:text/html;charset=utf-8'); //声明一个数组 $arr=['one'=>'aaa','two'=>'bbb','thre ...
- java基础知识—数组
1.数组:是一个变量,存储相同数据类型的一组数据. 2.数据的优点:减少代码量.易查找. 3.数组的使用步骤: 1)声明数组:int scores []: 2)开辟空间:scores = new in ...
- for ,foreach ,map 循环的区别
一.for循环 1.for - 循环代码块一定的次数 遍历数组最常用到的for循环,是最为熟知的一种方法 for (var i=0; i<5; i++) { x=x + "The nu ...
- Oracle学习DayTwo
一.创建表和管理表 1.表名和列名的命名规则 必须以字母开头必须在 1–30 个字符之间必须只能包含 A–Z, a–z, 0–9, _, $, 和 #必须不能和用户定义的其他对象重名必须不能是Orac ...
- input搜索框:根据历史记录自动填充后,去除默认黄色背景
如果是纯色背景,直接通过box-shadow覆盖即可: input:-webkit-autofill { color: #333!important; -webkit-text-fill-color: ...
- Linux:Gentoo系统的安装笔记(四)
本来以为结束,谁知离正常的系统还是比较远,不过不放弃,这期的笔记我敢肯定是最后一期了,写了那么多我也觉得烦,被gentoo折磨烦了. 安装KDE桌面 选择正确的配置文件 先获取root权限来安装桌面环 ...
- jquery tmpl生成导航
引入<script src="jquery.tmpl.min.js"></script> html<ul class="nav" ...
- C++标准库之迭代器
迭代器大致可分为: 输入迭代器,InputIterator 输出迭代器,OutputIterator 前行迭代器,ForwardIterator 双向迭代器,BidirectinalIterator ...
- 异常处理——java基础
Evernote Export 异常处理 异常处理的套路模板: try//创建异常处理{ throw new();//抛出异常 //一旦有异常, 抛出异常后,后面的语句不再执行 语句;{ …… ...
- 4--Postman--Request&Response
//var josndata=JSON.parse(responseBody);//获取body中返回的所有参数//tests["code"]=josndata.code===20 ...