关于cxGrid的排序问题

Posted 我的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于cxGrid的排序问题相关的知识,希望对你有一定的参考价值。

当然,这个 dcoAnsiSort也很重要,否者不按拼音排序

1、首先需要开启  Views的 OptionsCustomize.ColumnSorting

2、再设置每列的这个 Sorting 

3、如果设计期间就需要排序,那需要设置这个

SortOrder 的属性, 注意如果你用代码设置 Soring 为 soNone 等属性,那需要引用 dxCore单元

当然如果你在设计期间就需要启用支持多列排序,那你需要设置 SortIndex 的顺序

 

好了,这样你的程序,在运行期间就可以支持点击cxgrid的表格抬头Header排序了,按上 Ctrl 点击会取消排序列的排序状态,按上Shift会支持多列排序,是不是非常好用,感叹DEV太强大了。

当然,再加一个完美的方案,有的时候客户会乱排序,拍乱了,但我们会给客户提供一个我们默认的排序方案,所以我是在取得数据前先清除当前的排序状态:

//去掉全部排序
//tvDetail.DataController.GetItemByFieldName(\'ItemID\').SortOrder := soNone;

for iI := 0 to gridTableView.ColumnCount -1 do
begin
  //soNone 在 dxCore中定义 Uses dxCore
  gridTableView.Columns[iI].SortOrder :=soNone;
end;
//然后是你重新取得数据的代码

  if ReadDataset(strSQL ,Cds) then
  begin
    //gridTableView.Columns[0].ApplyBestFit();
    edtXh.OnChange(edtXh);
  end else
  begin
    Dm_PowerWy.UDBA.GetLastError(ErrID, ErrMsg);
    ShowMsg_West(\'出现错误\', \'无法读取数据!\', \'错误提示:\' +LBR + ErrMsg+LBR+\'相关SQL语句:\'+strSQL);

  end;

好的,就这样了!

以上是关于关于cxGrid的排序问题的主要内容,如果未能解决你的问题,请参考以下文章

cxGrid实现取消过滤和排序后定位到首行(单选和多选)

DELPHI中的cxgrid,如何用代码实现表格内容居中显示,注意不是表头是内容

CXGRID用法(取行列值;定位选中某行等等)

CxGrid用法汇总

delphi CXGRID用法 (取行列值;定位选中某行等等)

再说cxGrid主从表相关