关于DBGrid1中的排序问题(30分)

  • 主题发起人 主题发起人 zhoubbss
  • 开始时间 开始时间
Z

zhoubbss

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGrid1的数据列中,总是以升序方式排序,请问怎么以降序或其他方式排序?
我使用的是ACCESS 2000。
 
order by desc
 
升序 asc
降序 desc
 
在佧么地方修改?
 
如果你是用的TQuery直接修改你的SQL语句就可以了。

TTable请使用索引
TTable.AddIndex;创建
 
DBGrid只是用来显示dataSource中的数据而已,要排序,直接对表进行排序就好了.
 
Column.Sorted := csDown
Column.Sorted := csUp
Column.Sorted := csNone

 
哈哈,我刚解决这个问题,给全分啊:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var desf:String; i:integer;
begin
with ClientDataSet1.IndexDefs do
begin
i:=ClientDataSet1.IndexDefs.IndexOf('dataset_index');
if i>=0 then
if ClientDataSet1.IndexDefs.Items.Fields=Column.FieldName then
if ClientDataSet1.IndexDefs.Items.DescFields='' then
desf:=Column.FieldName;
Clear;
with AddIndexDef do
begin
Name:='dataset_index';
Fields:=Column.FieldName;
DescFields:=desf;
end;
end;

if ClientDataSet1.IndexName='dataset_index' then
ClientDataSet1.DeleteIndex('dataset_index');
ClientDataSet1.IndexName:='dataset_index';

end;
 
To yunye,请问
ClientDataSet1是什么东西呀。
老是说没有定义。。。。。
 
用得着那么复杂吗?
如果你是用的TQuery直接修改你的SQL语句就可以了。

TTable请使用索引
TTable.AddIndex;创建
 
看一下EHLIB自带的DEMO的第一个
可点击列头任意排序
 
以下方法用来实现 点击DBGrid列 按该列正序排序,再次点击 逆序
procedure TFormMain.MyDBGridTitleClick(Column: TColumn);
var i:integer;
begin
if AdoQCX.Sort = Column.FieldName then //AdoQCX为MyDBGrid绑定的Tadoquery
begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns.Title.RestoreDefaults;

AdoQCX.Sort := Column.FieldName + ' DESC';
Column.Title.Font.Color:=clPurple; //用紫色表示 逆序 字段
end
else begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns.Title.RestoreDefaults;

AdoQCX.Sort := Column.FieldName;
Column.Title.Font.Color:=clBlue; //用蓝色表示正序字段
end;
end;

顺便求教,有没有好方法实现 用上下箭头 代替颜色表示正序、逆序
前提是使用DBGrid控件,不是其他第三方控件
 
对DbGrid 排序就是对相应的数据集进行排序了
 
用QuantumGrid吧
 
问一下各位高手:
EHLIB中有一个点击就出现箭头的排序功能。但我只能做到出现箭头,排不了序?
到底是怎么回事!难道还需要我再写代码进行排序吗?有哪们高手知道能告知真的话。真是
感激不已!!!在此发言也可以,也可以发到小弟的箱子里:wujer@163.com
 
EHLIB

我有控件,但是没有 例子。。
哪位兄弟知道哪里有拉。因为现在我就是在用它,可惜用得不是很舒服,它的大部分
功能我不能实现。
 
To wujer:
EHLIB的DEMO的排序实际是重新查询表的,事件:OnSortMakingChange.
 
我明白了,谢谢
 
后退
顶部