0

パネルにバインドされたドキュメント データ ソース (親 ID のないドキュメントを作成) があります。パネル内には、他に 2 つのパネルがあります。パネル 1 のフィールドに入力したら、リンクをクリックして 2 番目のパネルを表示し、そこに [保存] ボタンがあります。ドキュメントを保存すると、データベースに正しく表示されます。

保存ボタンは dds 保存を実行してから、すべてのフィールドをクリアし、外側のパネルで部分的な更新を行い、そのパネルでも部分的な実行を行います。これは、メイン パネルの外側の XPage に他の dds があるためです。

ここで別のドキュメントを作成すると、新しいドキュメントを作成するのではなく、以前のドキュメントが更新されます。dds およびその他のオプションのさまざまなスコープを試しました。次に何を試すべきかわからない。

誰が問題が何であるか知っていますか?

4

3 に答える 3

9

部分的な更新で新しいデータソースを追加する方法の例を次に示します。

<xp:panel id="myPanel">
    <xp:this.data>
        <xp:dominoDocument var="document1"></xp:dominoDocument>
    </xp:this.data>
    <xp:br></xp:br>
    <xp:inputText id="inputText1" value="#{document1.Test}"></xp:inputText>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button value="Save" id="buttonSave">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="myPanel">
            <xp:this.action>

                <xp:actionGroup>
                    <xp:saveDocument var="document1"></xp:saveDocument>
                    <xp:executeScript>
                        <xp:this.script>
                            <![CDATA[#{javascript:
                                var panel = getComponent("myPanel");
                                var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
                                ds.setComponent(panel);
                                ds.setVar("document1");
                                panel.getData().clear();
                                panel.addData(ds);
                            }]]>
                        </xp:this.script>
                    </xp:executeScript>
                </xp:actionGroup>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
</xp:panel>

お役に立てれば

スヴェン

編集:

以前に定義されたすべてのデータソースをパネルから削除するclear()を追加しました。

于 2013-01-29T14:26:50.473 に答える
0

Sven の回答をうまく使用しましたが、サーバー側の JavaScript に余分な行を追加する必要がありました

<xp:executeScript>
    <xp:this.script>
        <![CDATA[#{javascript:
            var panel = getComponent("myPanel");
            var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
            ds.setComponent(panel);
            ds.setVar("document1");
            ds.setFormName('form1');
            panel.getData().clear();
            panel.addData(ds);
            }]]>
    </xp:this.script>
</xp:executeScript>
于 2016-06-18T07:17:54.603 に答える
0

それがデフォルトの動作です。ページ全体をリロードしたくない場合、オプションの 1 つは、データソースを削除し、[保存] ボタンをクリックしたときに SSJS イベントで新しいドキュメントを作成することです。

于 2013-01-29T14:05:11.063 に答える