0

入力テキストを繰り返しコントロール内に配置し、それを無制限に繰り返し、ドキュメント内のフィールドに動的にバインドする方法について説明しているこのディスカッションを見つけました。

これが私がしたことです。次のような繰り返しを作成しました。

<xp:repeat indexVar="fieldSuffix" value="#{viewScope.rowCount}">
 <xp:div>
  <xc:dynamicInputText dataSource="#{contact}" fieldName="fullName_#{fieldSuffix}" />
 </xp:div>
</xp:repeat>

カスタム コントロールdynamicInputTextでは、入力テキスト コントロールを次のように記述しました。

<inputText value="#{compositeData.dataSource[compositeData.fieldName]}" />

viewScope.rowCount次に、1 ずつインクリメントし、繰り返しコントロールを部分的に更新する[追加] ボタンを作成しました。これにより、入力テキストの新しい行が追加されます。viewScope.rowCount同様に、クリックすると 1 ずつ減少し、繰り返しコントロールを部分的に更新する[削除] ボタンを作成しました。これにより、最後に追加された入力テキストが削除されます。

[追加] を 3 回クリックすると、Web ページに 3 つの入力テキスト フィールドが表示されます。それぞれに情報を入力します。次に、[削除] をクリックして、3 番目 (最後) の入力テキストを削除します。データ ソースを保存すると、3 つすべてのフィールド (最後に削除したフィールドを含む) がドキュメントに保存されます。

なぜこれが起こるのですか?削除した 3 番目のフィールドがドキュメントに保存されないようにするにはどうすればよいですか?

4

1 に答える 1

1

そのフィールドのレンダリングを非表示にしました。バインドしたら、[削除] ボタンでその値をクリアするか、DDS からそのアイテムを削除する必要があります。たとえば、DDS.replaceItemValue( field, "" )または (できれば) DDS.removeItem( field )

于 2012-11-29T23:06:18.117 に答える