如何实现在DBGridEh里点击标题头排序???
做的是三层结构的C/S系统,DBGridEh的数据集使用TClientDataSet。
我知道在表或视图里实际存在的字段可以通过指定
TClientDataSet(Column.Field.DataSet).IndexFieldNames:=Column.FieldName;
来升序排列,但如何降序排列呢?因为计算字段和LookUp字段不是真实存在的,所以老是提示“field index out of range”错误,难道计算字段和LookUp字段真的不能在DBGridEh里排序吗,如果能该如何设置?注意是TClientDataSet,而不是TADOQuery。

解决方案 »

  1.   

    OnTitleClick事件中AdoQuery1.Sort:=Column.FieldName+' DESC';
      

  2.   

    select a,b,a+b as c from yourtable这样可对C排序,此处C也是计算出来的
      

  3.   

    就是说如何在OnTitleClick事件里写代码使TClientDataSet数据集中的数据排序,包括计算字段和LookUp字段。
    不死鸟:我就是想要计算字段和LookUp字段的排序方法,而且已经说了是TClientDataSet不是TADOQuery,TADOQuery可以排这个我知道,但我们做的系统是三层的,几乎都是用TClientDataSet。
    llw2003:我的QQ是45010133,我已经加你为好友了,你的源程序如果试过可行的话我马上给分,决不食言。
      

  4.   

    http://www.2ccc.com/article.asp?articleid=649自己带这个功能 。。
      

  5.   

    boytomato:我一直在用Ehlib控件,不过是3.0版本的,没想到现在的新版本可以自动排序了,谢谢,但是它还是不能对计算字段和LookUp字段排序,一点击标题就报错,该怎么处理呢?
      

  6.   

    不管什么字段都可以SortMarker设定为Truevar  SortString:String;
    begin
      if Column.Title.SortMarker = smDownEh then
         SortString:= Column.FieldName+ ' ASC'
      else
         SortString:= Column.FieldName+ ' DESC';  TADODataSet(TDbGridEh(Sender).DataSource.DataSet).Sort:=SortString;
      

  7.   

    我刚试了一下,
    TClientDataSet(TDbGridEh(Sender).DataSource.DataSet).sort=SortString;通过。你可以试试。
      

  8.   

    我记得里边有一个这deom 中有对LookUp字段排序这个功能。你可以找找!