学习unigui【18】unidbgrid的GridsGroupingSorting
折腾二天,你不按照demo里的代码来,就是没有效果。功力不够导致的。学习学习再学习!努力努力再努力!
procedure TUniGridsGroupingSorting.UniDBGrid1MultiColumnSort(
Columns: TUniDBGridColumnArr; Directions: TUniSortDirections);
var
OrderStr : string;
I : Integer;
begin
UniMainModule.ADOQuery5.Close;//必须在UniMainModule
OrderStr := 'select * from [Customers]' + ' order by '; for I := Low(Columns) to High(Columns) do
begin
OrderStr := OrderStr + '['+Columns[I].FieldName+ '] '+IfThen(Directions[I], 'ASC', 'DESC')+','; end; OrderStr := RemoveTrailingChar(OrderStr, ','); UniMainModule.ADOQuery5.SQL.Text := OrderStr;
UniMainModule.ADOQuery5.Open;
end;
其二、点击列排序:
procedure TUniGridsColumnSort.SortColumn(const FieldName: string; Dir: Boolean);
begin
if Dir then
ClientDataSet1.IndexName := FieldName+'_index_asc'
else
ClientDataSet1.IndexName := FieldName+'_index_des';
end; procedure TUniGridsColumnSort.UniDBGrid1ColumnSort(Column: TUniDBGridColumn;
Direction: Boolean);
begin
SortColumn(Column.FieldName, Direction);//必须分开写调用
end;
看明白没,必须按这种格式,分开写。否则就是不行。作者没有说明why?再WEB中这处理的理由,你知道WHY?
实际上非常简单:
1、创建内存表TFDMemTable
procedure TUniForm_SelectAPanient.UniFormCreate(Sender: TObject);
var i : Integer;
begin
UniMainModule.fdqry_QueryPatient.Open('select * from patient_info'); //符合条件的患者资料
fdmtbl_QueryPatient.CopyDataSet(UniMainModule.fdqry_QueryPatient, [coStructure, coRestart, coAppend]);
fdmtbl_QueryPatient.Filter := '';
fdmtbl_QueryPatient.IndexesActive := True;
UniMainModule.fdqry_QueryPatient.Close;
end;
2、改变index
procedure TUniForm_SelectAPanient.undbgrd1MultiColumnSort(
Columns: TUniDBGridColumnArr; Directions: TUniSortDirections);
var
i : integer;
OrderStr : string;
begin
OrderStr := '';
for I := Low(Columns) to High(Columns) do
begin
OrderStr := OrderStr + Columns[I].FieldName+ IfThen(Directions[I], ':A', ':D')+';';
end;
Delete(OrderStr, Length(OrderStr), 1);
fdmtbl_QueryPatient.IndexFieldNames := OrderStr;
end;

good luck!
学习unigui【18】unidbgrid的GridsGroupingSorting的更多相关文章
- UniGUI 之UniDBGrid(05)
UniGUI 之UniDBGrid(05) 目录1]DataSource设置2]显示MEMO类型里的文字3]显示悬浮提示4]显示当前记录及总记录数5]读取所有记录,及分页6]在前面加上序号列7]不显示 ...
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...
- springmvc学习笔记(18)-json数据交互
springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...
- cocos2d-x学习笔记(18)--游戏打包(windows平台)
cocos2d-x学习笔记(18)--游戏打包(windows平台) 之前做好的游戏,都是在vs2008下编译执行的.假设说想把游戏公布到网上或者和其它人一起分享游戏,那就得对游戏 ...
- C语言实例解析精粹学习笔记——18
<C语言实例解析精粹>中编译环境采用的是Turbo C 2.0.但是这个编译器年代久远,较新的编译器对书中的某些例子支持不好,在学习的时候同时做一些笔记. 实例18:将一个无符号整数转换为 ...
- tornado学习笔记18 _RequestDispatcher 请求分发器
根据Application的配置,主要负责将客户端的请求分发到具体的RequestHandler.这个类实现了HTTPMessageDelegate接口. 18.1 构造函数 定义: def __in ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- iOS阶段学习第18天笔记(Plist-Archiver-归档与解归档操作)
iOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist ...
随机推荐
- 免费-高清免费视频录像软件OBS
OBS studio 是免费开源的. https://obsproject.com/download 中文绿色版: http://www.xitongzhijia.net/soft/151705.ht ...
- CPU 性能优化总结
在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...
- struts2框架详解
struts2框架(1)---struts2入门 struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实 ...
- Iceberg Spark存储过程-表治理工具
一.简介 存储过程(Procedure)是数据库领域的概念,类似于编程语言中的方法或函数,是对实现特定操作的封装,原生的 Spark SQL 中是不支持存储过程的,Iceberg 0.11.0版本之后 ...
- 干货:DeepSeek+SpringAI实现流式对话!
前面一篇文章我们实现了<炸裂:SpringAI内置DeepSeek啦!>,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 26 期(2025年2.10-2.16)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- C51二进制数输入宏
在C语言中有十进制,十六进制,八进制;没有二进制的定义,在C51中使用十六进制表示有时不太直观,下面介绍几种方法表示二进制[均来自网络] 方法一 #define _BIN(a,b,c,d,e,f,g, ...
- JUC并发—10.锁优化与锁故障
大纲 1.标志位修改场景优先使用volatile(服务优雅停机) 2.数值递增场景优先使用Atomic类(心跳计数器) 3.共享变量仅对当前线程可见的场景优先使用ThreadLocal(edits l ...
- 摸鱼日历,新闻简报等一些工作摸鱼日历API接口合集分享
摸鱼人日历API接口 请求示例(图片输出): https://moyu.qqsuu.cn 请求示例(JSON输出):[推荐] https://moyu.qqsuu.cn/?type=json 调用示例 ...
- Sqoop1的导入导出
Sqoop1 和 Sqoop2 的区别 # 版本上 Sqoop1: 1.4.x Sqoop2: 1.99.x # 架构上 Sqoop1 使用 Sqoop客户端直接提交的方式(命令.将命令封装在脚本中) ...