如何在DBGrid中,点击每个标题列,让它按点击的列进行自动排序(针对查询到结果,而不重新操作数据库)?

解决方案 »

  1.   

    在Query里做
    用Order by +FieldName
      

  2.   

    在DBGRID的OnTitleClick事件里写,如:
    procedure TfrmKH.DBGrid1TitleClick(Column: TColumn);
    begin
        ADOQuery1.Sort:='FieldName1 [ASC|DESC],FieldName2 [ASC|DESC]';
    end;
      

  3.   

    如果是table或cilentdataset
    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
       with (DBGrid1.DataSource.DataSet as TclientDataset)do
    //或 with (DBGrid1.DataSource.DataSet as TTable)do   IndexFieldNames:=column.FieldName;
    end;
      

  4.   

    ADOQuery1.Sort:='FieldName1 [ASC|DESC],FieldName2 [ASC|DESC]';
      

  5.   

    在DBGRID的OnTitleClick事件里写,如:
    procedure TfrmKH.DBGrid1TitleClick(Column: TColumn);
    begin
        ADOQuery1.Sort:=column.FieldName;
    end;