2012-01-24 11 views
1

私はノートを持っているようにcity_3などcity_1、city_2、などの分野は、フォームフィールドにカスタムコントロール内の編集ボックスのバインドプログラム的

一連の形成、私はのXPageを持っており、そののXPageに私が持っています繰り返す。

リピートを10個の値1を持つ配列に基づいている - 10

var repArray = new Array() ; 
for (var i=1;i<=10;i++) { 
repArray.push(i) ; 
} 

リターン(repArray)。私はフィールドを表面に使用されたカスタムコントロールを持っている繰り返しの中で

がcity_10

を通じてcity_1繰り返しはまた、計算されcityFieldNameと呼ばれる文字列のカスタムプロパティを持つ に渡されたカスタムプロパティdocdatasourceを持っていますそれはcity_1であり、第二に、それはcity_2などである第1の繰り返し行のように、カスタムコントロールに..

編集可能なテキストフィールドを繰り返し コレクション名を使用すると、EL式 compositeData.docdatasource [のCompositeDataを使用してバインドされています.cityFieldName]

これはうまくいきますが、新しいフィールドを追加するたびに、新しいカスタムプロパティを作成して親ページの参照を作成する必要があります。

Iは、単にそのような

indexvarは、現在の行番号を表す変数である
compositeData.docdatasource['city_' + indexvar] 

として結合データを計算できるようにしたいです。

これは可能ですか?私はあなたが式言語で '+'を使うことができないことを読んでいます。 JavaScriptに

答えて

1

計算し、これは、カスタムコントロールでページのロード時に計算され

+0

こんにちはマーク、私はこれを試して、それを働かせることができませんでした。あなたが夢中ならば[link](http://focul.bucket1.s3.amazonaws.com/public_downloads/sean/SO_8992506_2.nsf)にデモのデータベースがあります。 –

0

必ず私はELの中に追加を行うことができなかったが、私は非常に成功している作る

var viewnam = "#{" + (compositeData.searchVar)+ "}" 
return viewnam 

ようなものを使用カスタムコントロールの外にあるフィールド名を単純に計算し、それらの値をカスタムコントロールに渡すだけです。

私が提示したプレゼンテーションから希望すれば、作業コードを送ることができます。

+0

答えを見る1、私はあなたが示唆しているものは同じだと思いますか?コードの提供に感謝 –

+0

市のための1つの財産と郡のための別の財産を持つことを望んでいないのですか? –

+0

いいえ、私は本当にデータソース用のプロパティを持っていますので、新しいフィールドを追加するときには、あまりやる必要がありません。 - 上記の回答1への回答を見てください - Mark Hughesの答えはうまくいくと思われます。 –

2

まず、カウンタの配列は必要ありません。ちょうど10回(数字) - 10回も繰り返す。そして、あなたが通りをバインドする都市、

#{datasource.indexvar[1]} 

をバインドする

#{datasource.indexvar[0]} 

を使用することができるはず

var repArray = []; 
for (var i=1;i<=10;i++) { 
    repArray.push(["city","street","zip","country","planet"]) ; 
} 
return repArray; 

:しかし、あなたは、配列の配列を構築することができます。

配列のシーケンスが乱れる危険性があります。それが問題であれば、ここでオブジェクトを深く掘り下げる必要があります。

+0

それはかなり独創的に見えます。新しいフィールドがカスタムコントロールに追加されるたびにXPageとカスタムコントロールの両方を更新する必要があるため、毎回新しいカスタムプロパティ定義を作成するよりもずっと面倒です。 noteまだコードを試していません。 –

関連する問題