cxGrid实现取消过滤和排序后定位到首行(单选和多选)

原创 2013年10月06日 18:42:24
  • 2107

DataContoller中的函数FocusedRecordIndex没有反应,FocusedRowIndex正常。

cxgrdtvGrid1DBTableView1.DataController.FocusedRecordIndex := 0; //定位到第一行,排序过滤无反应

cxgrdtvGrid1DBTableView1.DataController.FocusedRowIndex := 0; //定位到第一行,排序过滤仍正常

排序对应事件:cxGridDBTableView中的DataController的OnSortingChanged

过滤对应事件:cxGridDBTableView中的DataController的Filter的OnChanged

对于“排序”后定位到首行只需要设置dcofocusTopRowAfterSorting为True

1、测试cxGrid的cxGridDBBandTableView组件在排序或者过滤以后:(单选:MultSelect属性设置为False)

排序:devexpress1226版本的dcofocusTopRowAfterSorting设置为True即可焦点自动定位到首行,单选状态下有选中行焦点和颜色标示

过滤:默认设置,取消过滤后仍默认过滤时候选中的行,增加cxGridDBTableView中的DataController的Filter的OnChanged如下代码行,会出现取消过滤后选中首行(焦点和选中行颜色同时定位到第一行)

  1. var
  2. Filter: TcxDataFilterCriteria; //定义过滤器对象
  3. begin
  4. with Sender as TcxDataFilterCriteria do
  5. if IsEmpty then  //操作过滤器触发过滤器事件时判断过滤器是否为空,即:是否取消过滤
  6. begin
  7. cxgrdtvGrid1DBTableView1.DataController.FocusedRowIndex := 0; //焦点定位到第一行
  8. end;

2、针对多选情况变通调整,否则焦点(虚线框可以看见)可以移动,但是选中行颜色标志(背景颜色)不会;(多选:MultSelect属性设置为True)

排序:devexpress1226版本的dcofocusTopRowAfterSorting设置为True即可焦点自动定位到首行,多选状态下只有焦点标示无选中行颜色标示

过滤:默认设置,取消过滤后仍默认过滤时候选中的行,增加cxGridDBTableView中的DataController的Filter的OnChanged如下代码行,会出现取消过滤后无论过滤时候选择的一行还是多选都会在此时只选中首行(焦点和选中行颜色同时定位到第一行)

  1. var
  2. Filter: TcxDataFilterCriteria;
  3. begin
  4. with Sender as TcxDataFilterCriteria do
  5. if IsEmpty then  //操作过滤器触发过滤器事件时判断过滤器是否为空,即:是否取消过滤
  6. begin
  7. cxgrdtvGrid1DBTableView1.OptionsSelection.MultiSelect := False;
  8. cxgrdtvGrid1DBTableView1.DataController.FocusedRowIndex := 0; <span style="font-size:14px;font-family:Arial;">//焦点定位到第一行</span>
  9. cxgrdtvGrid1DBTableView1.OptionsSelection.MultiSelect := True;
  10. end;

3、cxGrid1DBTableView的OptionsView属性中的FocusRect为False就可以看不见虚线框,即获得焦点行的边框

4、在多选的情况下,按照以上所说的排序和过滤会出现,排序后焦点定位到第一行但是默认没有选中(背景色为白色),而取消过滤后焦点定位到第一行而且默认第一行选中(背景色为蓝色或者其他操作系统主题颜色),这样就不一致了,临时解决方案:

都只定位到第一行并且都不选择任何行,只需要对过滤后的事件代码做一个刷新调整即可:

  1. var
  2. Filter: TcxDataFilterCriteria;
  3. begin
  4. with Sender as TcxDataFilterCriteria do
  5. if IsEmpty then
  6. begin
  7. cxgrdtvGrid1DBTableView1.DataController.DataSet.Active := False;
  8. cxgrdtvGrid1DBTableView1.DataController.DataSet.Active := True;
  9. end;

cxGrid实现取消过滤和排序后定位到首行(单选和多选)的更多相关文章

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

    GridView用自带的过滤功能过滤数据后,想要获取过滤后的数据集,有两种方式: 一.笨办法就是循环遍历GridView,根据gridView.GetRow()或者gridView.GetDataRo ...

  2. cxGrid控件过滤筛选后如何获更新筛选后的数据集

    cxGrid控件过滤筛选后如何获更新筛选后的数据集 (2015-06-19 12:12:08) 转载▼ 标签: delphi cxgrid筛选数据集 cxgrid过滤 分类: Delphi cxGri ...

  3. 《Entity Framework 6 Recipes》中文翻译系列 (27) ------ 第五章 加载实体和导航属性之关联实体过滤、排序、执行聚合操作

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-9  关联实体过滤和排序 问题 你有一实体的实例,你想加载应用了过滤和排序的相关 ...

  4. 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...

  5. MixItUp:超炫!基于 CSS3 & jQuery 的过滤和排序插件

    MixItUp 是一款轻量,但功能强大的 jQuery 插件,提供了对分类和有序内容的美丽的动画过滤和排序功能.特别适合用于作品集网站,画廊,图片博客以及任何的分类或有序内容. 它是如何工作的? Mi ...

  6. [转]在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    本文转自:http://www.cnblogs.com/powertoolsteam/p/MVC5_GridView_2.html 背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5 ...

  7. Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值

    Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DB ...

  8. Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮

    Visual Studio 2013 (vs2013)中默认的界面中似乎没有向前向后定位这个非常实用的功能,下面是把它们找出来的方法: 方法1:右键-->工具栏空白处-->最下面,自定义- ...

  9. Oracle Day2 过滤、排序、单行函数

    1.过滤和排序 SQL> --查询10号部门的所有员工信息 SQL> select * from emp ; 未选定行 SQL> ed SP2: 无法创建保存文件 "afi ...

随机推荐

  1. 一个漂亮的lazarus做的pagecontrol

    厌倦了屏幕上的默认灰色?让我们来欣赏一下商业配色. 这个组件实现了高光,点睛色,描边边等效果, 再配几组色彩,应该非常不错. 基于 lazarus 1.08 大家可以上 www.fpccn.com 看 ...

  2. UI设计教程分享:电商网页页面设计常见表现手法

    1.手绘插画  场景.人物以及加上故事的创意绘画 会给人梦幻若隐若现的感觉,留下深刻的印象,适合做活动页面以及宣传自已的品牌 2.简约 颜色少于三色,背景以明度偏低的颜色为主,在信息大爆炸的时代,我们 ...

  3. swift 官方获取JSON 数据方法

    var url = NSURL(string: "http://www.weather.com.cn/data/sk/101120501.html") var data = NSD ...

  4. base64编码是什么1

    首先明确一点base64 是一种编码格式.就想UNICODE一样,能在电脑上表示所有字符,或者换句话说通过编码能让电脑理解你想要表示的字符(因为电脑只知道0和1 ) 就像ascII 中 0100 00 ...

  5. HttpURLConnection 返回汉字乱码(全是问号)

    public static String doPost(String urlStr, Map<String, Object> paramMap) throws Exception { UR ...

  6. 二叉搜索树(BST)

    二叉搜索树需满足以下四个条件: 1.若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 2.若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值: 3.任意节点的左.右 ...

  7. HACK字体安装

    参考:https://github.com/source-foundry/Hack Linux的 下载最新版本的Hack. 从存档中提取文件(.zip). 将字体文件复制到系统字体文件夹(通常/usr ...

  8. 【Java】导出word文档之freemarker导出

    Java导出word文档有很多种方式,本例介绍freemarker导出,根据现有的word模板进行导出 一.简单导出(不含循环导出) 1.新建一个word文件.如下图: 2.使用word将文件另存为x ...

  9. CentOS下利用mysqlbinlog恢复MySQL数据库

    如果不小心对数据库进行误操作,而又没有及时备份怎么办?这恐怕是广大的coder经常遇到的一类问题.我今天就因为不小心删除了某个数据库,但最后的备份是1个礼拜前的,唯一能解决的办法就是通过mysqlbi ...

  10. KM匹配板子

    /* gyt Live up to every day */ #include<cstdio> #include<cmath> #include<iostream> ...