複数の選択肢の形式

一、MultiSelectionHelperクラス

    MultiSelectionHelper selectionHelper;

ProdTable localProdTable;
FormRun frの。
;
プロ DSET =新しいセット(タイプ:: String)を。
IF(_args && _args.caller()&& _args.dataset()== TableNum(ProdTable))
{
FR = _args.caller()。
FDS = _args.record()DataSourceを()。
selectionHelper = MultiSelectionHelper :: createFromCaller(FR)。
用(localProdTable = selectionHelper.getFirst()。
localProdTable;
localProdTable = selectionHelper.getNext())
{
prodSet.add(localProdTable.ProdId)。
もし(localProdTable.createdBy!= curUserId())
++ ICOUNT;
もし(localProdTable.ProdStatus> ProdStatus :: StartedUp)
jcount ++;
}
}

第二に、複数のデータ及び選択されなかったフォーム

一貫したアプローチとシステムを採用。
前提条件:表名:DavMultiSelect
        テーブルの形式は、データソースとして使用するには、DavMultiSelect命名され
(1)テーブル変数テーブルを宣言DavMultiSelect
(2)ループのために選択されたレコードを横断
ループのための選択されたレコードのそれぞれにおける(3)処理
 
    DavMultiSelect TMP;
    ;
    (?:; TMP; TMP = DavMultiSelect_DS.getNext()DavMultiSelect_DS.cursor()TMP = DavMultiSelect_DS.getFirst(真)DavMultiSelect_DS.getFirst(真))について
    {
         //ここでは、各レコードの処理  
         tmp.Field1を印刷します。
    }
   
方法について:
(1)FormDataSource.getFirst([INTマーク、ブールfetchAhead])
        公共の共通getFirstと([int型のマーク、ブールfetchAhead])
        パラメータ:
        マーク:記録マークに戻ることにしましたか最初に同定されました。マークがゼロでない場合は、ピースは、マーク・レコードで識別された返され、その後、通話getNextを他の選択したレコードを返します。
        グリッド内の複数のレコードが選択された場合、レコードセットは、マーク= 1として識別されます。
        fetchAheadは:falseの場合、唯一のレコードまでCACHを返さなければ、真の場合は、レコードをCACHされていないが最初に見て、その後、選択したすべてのレコードを返し、その後CACHに追加されます。あなたは、レコードの大規模なセットを選択した場合は、trueに設定した時間がかかることがあります。
(2)FormDataSource.markRecord(antyレコード[、INTマーク])
        パラメータ:
        レコードは:のマークを記録するには
        マーク:タグ値
        あなたは、レコードを選択し、(例えば、上記の拡張子を持つ)を呼び出した場合:
        DavMultiSelect _DS.markRecord(DavMultiSelect _DS.cursor())。
        TMP = DavMultiSelect _DS.getFirst(2、TRUE)。
        这个时候,tmp和DavMultiSelect_DS.cursor是同一条记录
(3)FormDataSource.getNext()
        public Common getNext()
        会返回符合在getFirst中设置的过滤原则的下一条记录。
 
反选
 
注意:
(1)使用FormDataSource.getFirst([int mark,boolean fetchAhead]),如果参数mark=0的话,使用循环会返回当前DataSource的所有记录。
(2)如果FormDataSource上的记录被mark为大于零的任何整数,在element.redraw()后都会处于选中状态。
代码如下:
void clicked()

{

    DavQuery common;

    Map         map;

    ;   

map = new Map(Types::Int64,Types::Int64); 

for(common = DavQuery_DS.getFirst(true) ? DavQuery_DS.getFirst(true) : DavQuery_DS.cursor();

     common;

     common = DavQuery_DS.getNext())

{

      if(!map.exists(common.RecId)) 

           map.insert(common.RecId,common.RecId);

      DavQuery_Ds.markRecord(common,0);   

for(common = DavQuery_DS.getFirst(0) ? DavQuery_DS.getFirst(0) : DavQuery_DS.cursor();

     common;

     common = DavQuery_DS.getNext())

{

        if(!map.exists(common.RecId))       

{           

DavQuery_DS.markRecord(common,1); 

       }

      }

      super(); 

              element.redraw();

}

 

おすすめ

転載: www.cnblogs.com/xtwkh1973/p/10992897.html