新しい目標が必要なたびに、1つの行に3つのフィールドを作成する必要があります。目標1、中期1、中年1。次に、objective2を追加すると、midYear2、endYear2などが追加されます。最初はすべてが機能しているように見えますが、2回目には多くのフィールドが作成されます。私はviewScopeの変数がすべて正しいので、私が入れ子にしている/入れ子にしていない/自分のリピートを正しく使っていると仮定しているので、自分が混乱しているフィールドを表示しているだけです。私はちょうど1列ごとに3つのフィールドをそれぞれ必要とし、新しい行と繰り返し.....以下のコードは、しかし、誰かがより良いアプローチを持っている場合は、提案にも開いています.....ありがとうXpagesリピートコントロールとダイナミックフィールドの作成/表示
<xp:this.data>
<xp:dominoDocument
var="document1"
formName="objective">
</xp:dominoDocument>
</xp:this.data>
<xp:repeat id="repeat1" rows="100" value="#{viewScope.fields}"
var="fieldName">
<xp:repeat id="repeat2" rows="100" value="#{viewScope.fields2}"
var="fieldName2">
<xp:repeat id="repeat3" rows="100" value="#{viewScope.fields3}"
var="fieldName3">
<div class="row">
<div class="col-xs-4">
<xp:label value="#{fieldName}" for="inputText1">
</xp:label>
<xp:inputText id="inputText1">
<xp:this.value><![CDATA[#{document1[fieldName]}]]></xp:this.value>
</xp:inputText>
</div>
<div class="col-xs-4">
<xp:label value="#{fieldName2}" for="inputText2">
</xp:label>
<xp:inputText id="inputText2">
<xp:this.value><![CDATA[#{document1[fieldName2]}]]></xp:this.value>
</xp:inputText>
</div>
<div class="col-xs-4">
<xp:label value="#{fieldName3}" for="inputText3">
</xp:label>
<xp:inputText id="inputText3">
<xp:this.value><![CDATA[#{document1[fieldName3]}]]></xp:this.value>
</xp:inputText>
</div>
</div>
</xp:repeat>
</xp:repeat>
</xp:repeat>
<xp:button
value="Add Objective"
id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial"
refreshId="repeat1">
<xp:this.action><![CDATA[#{javascript:
if (!viewScope.fields) {
viewScope.fields = [];
viewScope.fields2 = [];
viewScope.fields3 = [];
var count:integer = 1;
}
viewScope.fields.push("Objective" + (viewScope.fields.length + 1));
viewScope.fields2.push("MidYear" + (viewScope.fields2.length + 1));
viewScope.fields3.push("EndYear" + (viewScope.fields3.length + 1));
count = count+1;
}]]></xp:this.action>
</xp:eventHandler>
こんにちはポール このアプローチでは、編集/完成するために各文書/目的を開く必要がありますか?要件は、ドキュメントを1つだけ必要とし、その上のすべてのフィールドに塗りつぶし/編集し、クリック数を減らすことが望ましい......おそらく最良のアプローチではないが、彼らが望むもの... –
必ずしもそうではない'action'プロパティを" editDocument "に計算することができます。これは、多くのドキュメントが同時に編集モードで開かれることを意味するため、通常は私の好みの選択肢ではないため、コードがさまざまな場所からそれらを更新できる場合、競合のリスクが高くなります。しかし、それはここでは当てはまらないかもしれません。あるいは、小さなBeanを作成し、バックエンド文書と直接対話することもできます。 –
こんにちはPaul、申し訳ありません、私は応答するのを忘れました。私が構築していたことの単純さのために、私はちょうどviewScope変数のフィールドの配列にバインドされたそれぞれの繰り返しで3つの列のそれぞれに1つの繰り返しを作成しました。また、viewScope変数を更新して行数を保存し、保存時にドキュメントに設定してから、ページ読み込み前にviewScope変数を事前に設定しています。あまりにも多くの作業をすることなくフィールドを動的に追加/削除できるようになりました。あなたの提案をありがとう! –