小弟用了一个grideh控制,绑定的是AdoQuery,然后AdoQuery.sort进行排序后,结果一用AdoQuery.refresh,排序的结果就消失了,怎么解决啊?

解决方案 »

  1.   

    你在Refresh后再Sort一次不就得了。
      

  2.   

    这样好麻烦哦,我是想有没有办法,在Refresh后,保持住sort的状态排序
      

  3.   

    在ADOQuery.AfterRefresh中加Sort代码
      

  4.   

    你在Refresh后再Sort一次不就得了,这种方法不行啊,比如我有5个记录,分别是价格的Grideh列表如下:
    ID  价格
    1    6
    2    5
    3    4
    4    3
    5    2假如我现在按倒序来排,然后我对ID2进行了修改,将价格改了1,再sort价格,ID2就会跑到最后了,我是想修改后,仍然让他保持原样排序,并且girdeh的数据也要更新为id2的价格为1。
      

  5.   

    晕啊,你把价格改了再sort当然会发生变化……
    要么你按照ID排序
    要么你就不要做refresh操作
      

  6.   

    因为我列的表比较简单,你看如果这样ID     价格 
    5         6 
    2         5 
    7         4 
    6         3 
    9         2 
    我要求,修改掉ID2的价格为1元,同时,Grideh表格的记录位置不动,同时价格又变成1元,怎么做?Grideh的数据绑定于Adoquery
      

  7.   

    那么,你修改表格的数据后,不要使用refresh不就可以了?
      

  8.   

    按id排序,或在Adoquery 的查询语句中排序.
      

  9.   

    TO mabaoyes :
      ID有可能是乱序的,就像7楼那样TO windindance :
      我的修改不是在grideh中进行的,而且重新做了一个form来修改,这样显得更专业一样。所以就出现了这个难题,不知道有没有解决的办法
      

  10.   

    答案是不行的..你sort的字段是你要修改的字段.sort伴随成表格重绘事件.你修改数据提交保存后,都会重新sort.除非用其他字段sort.
      

  11.   

    TO duset,  你说的应该是对的,如果排序是待修改的数据,的确修改后会重新sort,但还有没有其他办法呢?
      

  12.   

    按你的说法是做不到的你说用sort排序   那排序总要有个规则吧!
    你就2个字段。。不能按ID排序吧。因为你说ID可能是乱序的那就只能用令一个字段 价格 排序了!  可按价格排序也就乱了!
    ID           价格   
    5                   6   
    2                   1  
    7                   4   
    6                   3   
    9                   5
    这个是你想要的结果吧那你说上面这个是按什么排序的  除非还有第三个字段
      

  13.   

    为什么不用AdoQuery1.SQL.Text属性呢具体代码如下: ADOQuery1.SQL.Text := 'SELECT * FROM Table ORDERED BY XXX ASC|DESC';
     ADOQuery1.ExeSQL;利用SQL语句进行排序不是更方便么!
      

  14.   

    TO yanbing3456 :我并是说一定要按字段来排序,而是指修改数据后,保持原来的顺序不变