有可按字段排序的dbgrid控件吗? up 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 dx系列的可以,在www.playicq.com上有下载 dxdbgrid有必要吗?你写sql 语句排序不就得了 procedure TFrmClient_G.DBGrid1TitleClick(Column: TColumn); var sfield:string;begin sfield:=column.FieldName; dataset.Sort:=sfield + ' ASC' ;end; 没有必要把,完全可以在DBGRrid.ontitleclick事件中实现先设置全局变量Private Flag_sort :boolean;//升序或降序 Field_sort :string;//要排序的字段 在窗体的Formshow事件初始化 Flag_sort :=false; Field_sort :='';再DBGrid.ontitleclick事件写下: Flag_sort :=Not Flag_sort; Field_sort :=Column.FieldName; Action_search.execute;//查询语句自己可以写调用Flag_sort 和Field_sort 实际上DBGrid只是原原本本的显示数据集中的数据,数据在数据集中怎么排序,DBGrid就怎么排序。所以,要解决DBGrid的排序问题,其实就是解决数据集的排序问题。1:TClientDataSet有一个属性,你在DBGrid的OnTitleClick事件中写下面的语句,就可以随意排序。 ClientDataSet1.IndexFieldNames := Column.FieldName;2:其他的数据集控件如TQuery、TADOQuery、TTable等等,我也曾经寻找过是否有类似的简便的方法,结果没有找到。也许有,也许没有,不得而知。所以,解决的办法就是自己写SQL语句了。呵呵!如果有那位高手能有更加简单的方法,请贴! 对于这个问题,我是这么想的:TClientDataSet控件它有着自己的特殊性,一般用在三层的结构中比较多。它能够根据用户自己的需求创建一个虚拟的表。然后把数据一次性读入在内存中。而其他的数据集一般都用在两曾结构中,直接和数据库相连接。它只在数据库中取部分数据(如果数据量太大,不能一次显示出来),而这些数据早就已经通过我们写的SQL语句在数据库中排序好了,传递过来。 如果有其他的第三方的DBGrid控件,我想它如果能有排序的功能,那么它应该隐藏了一个类似于TClientDataSet的数据集控件,只是封装后,我们看不到而已。 ----个人观点,仅供参考。如有错误,纯属正常。 对DBGrid排序没有意义你可以设置对应的DataSet的KeyField KeyFieldNames 在dbgrideh中可实现单击标题自动排序的功能!而且还能按多列排序.建议你用dbgrideh取代dbgrid. 类的实例对象 如果循环执行某个函数 - 60分!一直在线给分. 急!!!Active Form中使用第三方控件的问题 如何枚举所有进程并显示 请问:在delphi4中用什么函数截取子串? 如何自动释放内存?? 如何实现Word文件内字符查找? 紧急求助!!当点击帮助按钮时,如何转到.chm文件中相应的页面?如果有例子最好了. ADO连接的问题 怎么写程序使一个字符串与另一个字符串的前几位相同? 用过1stClass控件的请进 请教:关于DxDBGrid控件中录入中文时出现乱码的问题。
有必要吗?
你写sql 语句排序不就得了
var sfield:string;
begin
sfield:=column.FieldName;
dataset.Sort:=sfield + ' ASC' ;
end;
完全可以在DBGRrid.ontitleclick事件中实现
先设置全局变量
Private
Flag_sort :boolean;//升序或降序
Field_sort :string;//要排序的字段
在窗体的Formshow事件初始化
Flag_sort :=false;
Field_sort :='';
再DBGrid.ontitleclick事件
写下:
Flag_sort :=Not Flag_sort;
Field_sort :=Column.FieldName;
Action_search.execute;//查询语句自己可以写调用Flag_sort 和Field_sort
1:TClientDataSet有一个属性,你在DBGrid的OnTitleClick事件中写下面的语句,就可以随意排序。
ClientDataSet1.IndexFieldNames := Column.FieldName;
2:其他的数据集控件如TQuery、TADOQuery、TTable等等,我也曾经寻找过是否有类似的简便的方法,结果没有找到。也许有,也许没有,不得而知。所以,解决的办法就是自己写SQL语句了。呵呵!如果有那位高手能有更加简单的方法,请贴! 对于这个问题,我是这么想的:TClientDataSet控件它有着自己的特殊性,一般用在三层的结构中比较多。它能够根据用户自己的需求创建一个虚拟的表。然后把数据一次性读入在内存中。而其他的数据集一般都用在两曾结构中,直接和数据库相连接。它只在数据库中取部分数据(如果数据量太大,不能一次显示出来),而这些数据早就已经通过我们写的SQL语句在数据库中排序好了,传递过来。
如果有其他的第三方的DBGrid控件,我想它如果能有排序的功能,那么它应该隐藏了一个类似于TClientDataSet的数据集控件,只是封装后,我们看不到而已。 ----个人观点,仅供参考。如有错误,纯属正常。
你可以设置对应的DataSet的KeyField KeyFieldNames