Ax Grid 的显示根据用户的需求动态排序。

用按钮控制记录的上下移动

点击方向按钮上下移动记录。

设计思路。

以临时表TmpTable1举例。

在表中加一个real类型字段(eg:ColumnSeq)用于排序,给表建一个ColumnSeq字段的索引ColumnSeqIdx.

在Form的数据源中设置index属性:ColumnSeqIdx. 这样Grid显示数据就会根据ColumnSeq排序。

在form init 临时表数据时,ColumnSeq为一个累加值。

当点击上移记录按钮的时候,倒序TmpTable1的ColumnSeq,大于当前行ColumnSeq,取前2个ColumnSeq和值除以2,

用这个值更新当前移动行的ColumnSeq。 
比如,当前行ColumnSeq(10),上2行=8+9,用(8+9)/2.0= 8.5,用8.5更新当前行则达到了实现排序的目的。

void click()
{
    // button move Up
     tmpTable1    tmp;
     real              newSeq;
     int                searchTimes;
     ;  
     tmp.settmpTable( tmpTable1 );
    
     while select tmp order by ColumnSeq Desc
          where tmp.ColumnSeq < tmpTable1.ColumnSeq
     {
          searchTimes++;
          newSeq += tmp.ColumnSeq;
          if( searchTimes>=2) break;
     }   
     

     if( searchTimes>=1)
     {
          newSeq  = newSeq /2.0;
          tmpTable1.ColumnSeq = newSeq;
          tmpTable1.update();
          tmpTable1_DS.executeQuery();
          tmpTable1_DS.refresh();
          tmpTable1_DS.findRecord(  tmpTable1);

     }
}        
View Code
原文地址:https://www.cnblogs.com/sxypeace/p/4616296.html