Flex ComboBox, 기본값 및 데이터 공급자
-
09-06-2019 - |
문제
나에겐 플렉스가 있다 ComboBox
이는 다음으로 채워집니다. dataprovider
다 괜찮아...
이제 0 인덱스에 기본 "-항목 선택-" 옵션을 추가하고 싶습니다. 어떻게 해야 하면서도 계속 사용할 수 있나요? dataprovider
?나는 그런 예를 본 적이 없지만 이것이 어렵다고 상상할 수는 없습니다 ...
해결책
기본 항목을 선택할 필요가 없으면 다음을 사용할 수 있습니다. prompt
의 자산 ComboBox
그리고 설정 selectedIndex
-1로.설정한 문자열이 표시됩니다. propmt
사용자가 다른 값을 선택할 때까지 선택한 값으로 유지됩니다.그러나 옵션 목록에는 나타나지 않습니다.
다른 팁
오늘 이 문제를 발견했고 해결책을 공유하고 싶었습니다.
데이터 공급자인 개체를 포함하는 ArrayCollection이 있는 ComboBox가 있습니다.응용 프로그램이 실행되면 RemoteObject를 사용하여 ArrayCollection/Objects를 가져옵니다.해당 호출에 대한 이벤트 처리기에서는 ArrayCollection의 시작 부분에 다른 개체를 추가하고 선택하도록 했습니다.
var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;
참고로 내 ComboBox의 모습은 다음과 같습니다.
<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />
과거에 내가 이 문제를 처리한 방식은 콤보 상자의 데이터 공급자 역할을 할 새 컬렉션을 만든 다음 원래 소스에 대한 변경 사항을 수신하는 것이었습니다( mx.BindingUtils.ChangeWatcher
).이러한 알림을 받으면 맞춤 데이터 공급자를 다시 만듭니다.
이에 접근하는 더 좋은 방법을 알고 싶습니다.혹시라도 이 질문을 모니터링하겠습니다.
선택된 콤보박스 기본값에 대해 다음 코드를 사용할 수 있습니다.
var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
if(comboBox.dataProvider[objIndex].label == index)
{
comboBox.selectedIndex = objIndex;
break;
}
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />