0

ビューでクリックされた行だけでなく、前の行のバックエンド ドキュメントのフィールドの値を変更したいと考えています。これを行う最良の方法は何ですか?

4

1 に答える 1

1

興味深いトピック。私はそれを試してみて、この解決策を見つけました:

ビュー パネルを使用していると仮定します (ただし、代わりに繰り返しのようなものを使用すると、作業が少し簡単になる場合があります)。viewPanel の [すべてのプロパティ] の下で、「data > var」というプロパティを探します (注意: 「data > data > var」もありますが、これは別のものです!)。ここで、ビュー エントリにアクセスするための一意の名前を入力します。

<xp:viewPanel rows="30" id="viewPanel1" var="entry">        
    <xp:this.data>
        <xp:dominoView var="view1" viewName="myView"></xp:dominoView>
    </xp:this.data>

データ プロパティを計算する追加の列を追加し、現在のエントリの親ビュー Navigator オブジェクトを使用して前のエントリを計算し、現在のエントリと前のエントリの両方が有効な View Entry オブジェクトであることを確認しました。次に、結果として、前のエントリの NoteID 値を返して、実際にアクセスしたことを確認します。

if(!entry.isCategory()){
    var vnav:NotesViewNavigator = entry.getParent();
    vnav.gotoEntry(entry.getDocument())
    var pentry = vnav.getPrev();
    if(pentry!=null){
        pentry.getNoteID();
    }
}

これを適切に確認できるようにするために、現在のエントリの NoteIDを表示する列をもう 1 つ追加しました。

entry.getNoteID();

結果は次のようになります。

ここに画像の説明を入力

したがって、前のオブジェクトを取得すると、そのドキュメント オブジェクトにもアクセスできます。

編集: viewNavigator オブジェクトを通常の方法で取得する方法:

次のように、親ビュー オブジェクトを使用して viewNavigator を作成するだけです。

var view = database.getView("myView);
var vnav = view.createViewNav();

一方、entry.getParent() が viewEntryCollection につながることがわかった場合は、別の方法で前のエントリにアクセスすることもできます。

var vec = entry.getParent();
if (vec.toString().indexOf("ViewEntryCollection")>0){
    var preventry = vec.getPrevEntry(entry);
}
于 2012-07-19T09:50:33.200 に答える