用DBGridEh如何排序,排序字段由用户自己设置。

解决方案 »

  1.   

    将提供数据的组件排序,如adotable中有index属性,将用户的设置赋予给它,再refresh,一切就OK。
      

  2.   

    首先设X列为排序
    DBGridEH1.Columns[X].Title.SortMarker =smUPEh;
    然后在DbGridEH1.GridTitleBtnClick()事件写如下代码即可
    procedure GridTitleBtnClick(Sender: TObject;
      ACol: Integer; Column: TColumnEh);
    begin
      with ((Sender As TDBGridEh).DataSource.Dataset As TAdoDataSet) do
      begin
        if Column.Title.SortMarker =smNoneEh then begin
           Sort :=Column.FieldName+' ASC';
           Column.Title.SortMarker :=smUpEh;
        end else if Column.Title.SortMarker =smDownEh then begin
           Sort :=Column.FieldName+' ASC';
           Column.Title.SortMarker :=smUpEh;
        end else begin
           Sort :=Column.FieldName+' DESC';
           Column.Title.SortMarker :=smDownEh;
        end;
      end;
      

  3.   

    //DBGRID 的 排序
    procedure DBGridEhTitleClick(Column: TColumnEh);
    begin
      with Column do
      if Field <> nil then
      if Field.DataSet is Tadoquery  then
      with Field.DataSet as Tadoquery  do
      if active then
      begin
       if flag_jiji then
         sort := Column.FieldName + ' DESC'
        ELSE
         sort := Column.FieldName + ' ASC';
       flag_jiji:=not flag_jiji;
      end;
    end;
      

  4.   

    点击DBGridEh列头就会排序的吧