문제

나에겐 플렉스가 있다 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}" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top