DBGrid 中如何实现排序(100分)

  • 主题发起人 主题发起人 xself
  • 开始时间 开始时间
X

xself

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGrid 中如何实单击某列的标题,BGgrid中的内容便按该列排序?
 
使用ehlib控件或者infopower
 
这个问题以前讨论过的,响应DBGrid的OnTitleClick事件,从参数Column可以得到字段名(Column.FieldName),
然后写带order by的sql语句刷新数据。
 
D5中好象没有办法,只有对DBGRID中的QUERY写SQL了。
 
1。在DBGrid ONCLICK中自己写代码(D5中的DBGrid 没有办法)。
2。用第三方控件。
 
同意DG,我现在就是这样做的
 
DBGRID的排序是数据集完成的。不像SG,你应该在自己的SQL,或INDEX中作处理。
 
agree dq's method,I use this way too.
 
用Tquery来代替TTable,其中sql语句可以自己写,按你想要的排序order就可以了
 
试试先对数据表排序,然后刷新
数据表排序可以用Table的IndexfieldName属性
 
TABLE用索引最简单,先预先用要排序的列进行排序,再在CLICK后刷新索引。
QUERY用ORDER BY,太慢。
控件DEV的GRID最好用,但有时有点混乱.
有一项就给点分吧现在分太少。
 
这么多重复的答案!!!!!
想赚分早点来就是了,没必要跟着别人学舌。
 
同意eyes4的方法:)
我不要分,
只是遇到同样问题,看看大家都是这么做的
 
用DevEx的ExpressQuantumGrid (dxdbgrid)是可以实现的,我一直都在用,要不想重写SQL语句
的话,只有对内存表操作了(我也想知道怎么做!)

对放在ExpressQuantumGrid (dxdbgrid)中的记录的按不同字段进行排序,下面是我的用法:
关键属性设置
1.在options中设置egoLoadAllRecord:=true
2.在options中设置egoIndicator:=true1.
3.在optionsEX中设置egoAutoSort:=true
4.在optionsEX中设置egoAnsiSort:=true
5.KeyField属性一定要填入一个相应的字段
 
下载DevEx的ExpressQuantumGrid 控件的地址:http://www.inprises.com/
 
我同意dq的说法,我也是这样实现的
 
???,似乎只有dq说的办法了
 
同意dq,我一值这么做的!很有用的!
 
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
Query1.DisableControls;
Screen.Cursor := crHourGlass;
try
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(BaseQuery);
Query1.SQL.Add('ORDER BY ' + Column.FieldName);
Query1.Open;
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color := clBlue;
finally
Query1.EnableControls;
Screen.Cursor := crDefault;
end;
end;
 
用第三方控件。
 
后退
顶部