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