5

開発者の皆さん、私はカスタム リスト ページを用意しています。ユーザーはいくつかのレコードを選択し、アクション ペインのボタンを押してクラス内のロジックを実行するだけで、すべて正常に動作します。私の問題は、カーソルが同じレコードにとどまらず、グリッドの一番上に移動することです。おなじみの問題のように聞こえますか?

すべてのロジックを持つカスタム クラスに引数を使用して、リスト ページの FormDataSource を格納します。

私はいくつかのことを試しましたが、どれもうまくいきませんでした。

  1. formDataSource.research(true) true パラメーターは、リサーチが仕事を終えた後もその位置を保持することになっています。これが最も簡単な解決策だったはずだと思います。リストページのクエリには、外部結合を使用して結合された 2 つのデータソースがあり、私の推測では、research(true) は内部結合でのみ機能します。

  2. formDatasource.setPosition(位置)

    int 位置;
    position = formDatasource.getPosition();

    formDatasource.research();

    formDatasource.setPosition(位置);

    getPosition を使用して位置を保存し、setPosition を使用して再度設定します。役に立たない。

  3. formDataSource.findRecord()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    formDatasource.findRecord(currentRecord);

    ds.cursor() を使用して現在のレコードを取得し、research() の後に findRecord() に渡します。役に立たない。

  4. formDataSource.findValue()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    formDatasource.findValue(fieldNum(テーブル、RecId)、int642str(recId));

    ds.cursor() を使用して現在のレコードと recId を取得し、research() の後に findValue() に渡します。役に立たない。

上記のコードをデバッグしたところ、cursor() メソッドは現在のレコードとその recId を取得します。私はそれがリストページの制限である可能性があると信じ始めており、誰かが私が間違っていることを証明してくれることを祈っています.

どんな助けでも大歓迎です。

4

3 に答える 3

2

方法3を使用しますが、このようにします。

YourTable tmpTable;


currentRecord = formDatasource.cursor();

recId = currentRecord.RecId;
tmpTable = TmpTable::findByRecId(recId);
 formDatasource.reread();

formDatasource.research();
formDatasource.findRecord(tmpTable); 

お役に立てれば。

于 2013-07-30T09:31:18.070 に答える
0

このような2番目の方法を使用します

int position;
position = formDatasource.getPosition();
//Make your update operations here
formDatasource.research(true);

formDatasource.setPosition(position);

わたしにはできる。

于 2015-08-06T11:17:07.230 に答える