Flex DropDownList LabelFunction の問題
-
09-10-2019 - |
質問
次のようなドロップダウンリストがあります:
<s:DropDownList id="cad" width="100%" dataProvider="{model.referenceList.refPatientResponseLists}"
labelFunction="myFunction" selectedIndex="{model.cd.code}"/>
refPatientResponseLists は 3 行のデータを返すようになりました。ドロップダウンリストに 3 つの値を表示する必要があります。したがって、ラベル関数は次のようになります。
public function myFunction(item:Object):String {
return item['refPatientResponses'] [cad.dataProvider.getItemIndex(item)]['responseDesc']+'';
}
ただし、これではドロップダウンリストに値が 1 つだけ表示されます。したがって、次のようなものが返されます。
return item['refPatientResponses'] [0] ['responseDesc']+''
ドロップダウン内の 3 つの値をすべて取得するにはどうすればよいですか。私の質問が理解できることを願っており、返答を期待しています。
ありがとう
ハリッシュ
ログからのオブジェクト構造:
(Typed Object #1 'datacollection.model.ReferenceList')
(Array #3)
refPatientResponseLists = (Externalizable Object #4 'flex.messaging.io.ArrayCollection')
(Array #5)
[0] = (Typed Object #6 'datacollection.model.RefPatientResponseList')
refPatientResponses = (Externalizable Object #7 'flex.messaging.io.ArrayCollection')
(Array #8)
[0] = (Typed Object #9 'datacollection.model.RefPatientResponse')
responseSequence = 1
responseDesc = "No"
responseCode = 28
responseTypeCode = 10
[1] = (Typed Object #10 'datacollection.model.RefPatientResponse')
responseSequence = 2
responseDesc = "Yes"
responseCode = 29
responseTypeCode = 10
[2] = (Typed Object #11 'datacollection.model.RefPatientResponse')
responseSequence = 3
responseDesc = "Claim Not Found"
responseCode = 30
responseTypeCode = 10
解決 2
OK、それを使用して解決できました
Model.referenceList.refPatientResponseLists.getItemAt(0).refPatientResponses
同様の問題を抱えている他の人にとって役立つかもしれません:)
他のヒント
あなたの問題は、ドロップダウン リストに項目が 1 つしかないことなのか、それともドロップダウン リスト内のすべての項目が同じテキストを表示していることなのかがわかりません。しかし、私は前者を想定してこの回答を書きました。
デバッグモードで実行しましたか?labelFunction は何回呼び出されていますか?この場合、labelFunction は危険な存在だと思います。リストに 1 つの項目しか表示されない場合は、dataProvider に 1 つの項目しかないと考えられている可能性が高くなります。
3 つの項目を含む dataProvider がある場合、labelFunction を 3 回呼び出す必要があります。項目ごとに 1 回呼び出されます。
一般に、複数のオブジェクトにバインドしない場合、バインディング エクスペリエンスが最も安定します。したがって、これは問題ありません:
model.referenceList
またはこれ
referenceList.refPatientResponseLists
しかし、私はこれがうまくいくとは期待していません:
model.referenceList.refPatientResponseLists
そこで質問なのですが、dataProvider で 3 つの項目が返されていることは確かですか?dataProvider に 3 つの項目があること (別名、バインディングが適切に更新されていること) をコンポーネントが認識していると確信していますか?
オブジェクトの構造が分からないと、labelFunction をデバッグするのは困難ですが、getItemIndex 関数を使用する必要はありません。