Unigui 的TUniDBGrid排序功能

免费人力资源管理软件,免费Mes系统,免费仓库管理软件WMS

 

1,需要排序的列设置saortable:=true;

2,在grid的OnColumnSort中调用以下代码

3,每次排序都要重新查询连接数据库,应该还有更高效的方法

 

 

procedure DbGridSortByCol(dbGrid: TUniDBGrid;
Column: TUniDBGridColumn; Direction: Boolean);
var OrderStr:string;
OrderPos:integer;
SqlStr:string;
Para:TUniParams;
DescStr:string;
OldSqlStr:string;
begin
if Direction=True then
DescStr:=''
else
DescStr:=' desc';

 


OldSqlStr:=(dbGrid.DataSource.DataSet as TUniQuery).SQL.Text;

SqlStr:=LowerCase(OldSqlStr);


Para:=(dbGrid.DataSource.DataSet as TUniQuery).Params;

OrderPos:=Pos(' order ',SqlStr);

 

if OrderPos=-1 then
begin
SqlStr:=SqlStr+' order by '+Column.FieldName;
end
else
begin
SqlStr:=Copy(SqlStr,0,OrderPos)+' order by '+Column.FieldName;;
end;

 

(dbGrid.DataSource.DataSet as TUniQuery).Close;
(dbGrid.DataSource.DataSet as TUniQuery).SQL.Text:=SqlStr+DescStr;
(dbGrid.DataSource.DataSet as TUniQuery).Params:=Para;
(dbGrid.DataSource.DataSet as TUniQuery).Open;

end;

posted @ 2020-08-07 16:19  HelloWorld2008  阅读(698)  评论(0)    收藏  举报