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;

浙公网安备 33010602011771号