2008-08-29 28 views
14

Tôi có một ComboBox Flex được điền bởi một dataprovider tất cả là tốt ...Flex ComboBox, giá trị mặc định và dataproviders

Bây giờ tôi muốn thêm tùy chọn "- chọn mục -" mặc định chỉ số 0, làm thế nào tôi có thể làm điều này và vẫn sử dụng một dataprovider? Tôi đã không nhìn thấy bất kỳ ví dụ nào như vậy, nhưng tôi không thể tưởng tượng điều này là khó khăn ...

Trả lời

35

Nếu bạn không cần mục mặc định có thể chọn, bạn có thể sử dụng thuộc tính prompt của ComboBox và đặt selectedIndex thành -1. Điều đó sẽ hiển thị chuỗi bạn đặt propmt thành giá trị được chọn cho đến khi người dùng chọn giá trị khác. Tuy nhiên, nó sẽ không xuất hiện trong danh sách các tùy chọn.

+3

điều này vẫn hoạt động cho Spark DropDownList - cảm ơn – danjp

1

Cách tôi đã xử lý điều này trong quá khứ là tạo một bộ sưu tập mới để phục vụ như nhà cung cấp dữ liệu cho combobox, và sau đó tôi lắng nghe những thay đổi đối với nguồn gốc (sử dụng mx.BindingUtils.ChangeWatcher). Khi tôi nhận được thông báo như vậy, tôi tạo lại nhà cung cấp dữ liệu tùy chỉnh của mình.

Tôi ước mình biết cách tốt hơn để tiếp cận điều này; Tôi sẽ theo dõi câu hỏi này chỉ trong trường hợp.

4

Tôi đã gặp phải vấn đề này ngày hôm nay và muốn chia sẻ giải pháp của mình.

Tôi có một ComboBox có ArrayCollection chứa các đối tượng vì nó là dataprovider. Khi ứng dụng chạy, nó sử dụng một RemoteObject để đi ra ngoài và lấy ArrayCollection/Objects. Trong xử lý sự kiện của tôi cho cuộc gọi mà tôi chỉ có nó thêm một đối tượng khác để đầu ArrayCollection và chọn nó:

var defaultOption:Object = {MyLabelField: "Select One"}; 
myDataProvider.addItemAt(defaultOption, 0); 
myComboBox.selectedIndex = 0; 

Đây là những gì ComboBox của tôi trông giống như để tham khảo:

<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" /> 
0

này có thể được sử dụng mã sau cho giá trị mặc định đã chọn của combobox

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}" /> 
Các vấn đề liên quan