一、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();
}