2011-01-26 28 views
6

Tôi cần một số trợ giúp lập trình thiết lập mục đã chọn trong hộp tổ hợp.Flex: Lập trình Thiết lập mục đã chọn trong một ComboBox

Tôi đã có một combobox như thế này:

<mx:ComboBox id="MyComboBox" change="puzzleHandler(event);" prompt="Make a Selection"> 
    <mx:ArrayCollection id="myDP"> 
     <mx:Object id="first" label="Label 1" series="2" pageTitle="Title 1"/> 
     <mx:Object id="second" label="Label 2" series="7" pageTitle="Title 2"/>           
     <mx:Object id="third" label="Label 3" series="9" pageTitle="Title 3"/>           
    </mx:ArrayCollection> 
</mx:ComboBox> 

Tôi đã có một chức năng mà coi liên kết sâu. Nếu ai đó đặt vào url: www.mysite.com/#view=2 họ sẽ được đưa đến phần thích hợp của trang web (không có Nhãn được chọn 2 trong comboBox). Làm thế nào để tôi thiết lập comboBox một cách lập trình, để nó tương ứng với những gì người dùng đang xem?

Trong báo cáo chuyển đổi chức năng của tôi, tôi muốn đặt comboBox vào nhãn tương ứng với chế độ xem. Nếu "view = 2" thì comboBox sẽ hiển thị "Label 2" như đã chọn.

case "view=1": 
     MyComboBox.selectedItem.label="Label 1"; 
     parseUrl(); 

    case "view=2": 
     MyComboBox.selectedItem.label="Label 2"; 
     parseUrl(); 

    case "view=3": 
     MyComboBox.selectedItem.label="Label 3"; 
     parseUrl(); 

Tôi đã thử: MyComboBox.selectedItem.label = "Label 1" Nhưng nó không hoạt động. Bất kỳ đề xuất?

Cảm ơn bạn.

-Laxmidi

Trả lời

8

Bạn không muốn thay đổi đối tượng selectedItem; bạn muốn thay đổi selectedItem hoặc selectedIndex. Hãy thử điều này:

case "view=1": 
    MyComboBox.selectedIndex=0; 
    parseUrl(); 

case "view=2": 
    MyComboBox.selectedIndex=1; 
    parseUrl(); 

case "view=3": 
    MyComboBox.selectedIndex=2; 
    parseUrl(); 

NẾU bạn muốn thiết lập các SelectedItem thay vì selectedIndex bạn sẽ phải lặp trên dataProvider để tìm các mặt hàng thực tế dựa trên các trường hợp giá trị/URL. Một cái gì đó như thế này:

for each(var tempObject : Object in myList.dataProvider){ 
    if(tempObject.label == urlValue){ 
    MyComboBox.selectedItem = tempObject; 
    break; 
} 
} 

Cách tiếp cận thứ hai linh hoạt hơn trong thời gian dài.

+0

Xin chào, Flextras.com, hơn bạn để được trợ giúp. Tôi đã đi với tùy chọn 2 và nó đã làm việc tuyệt vời. Cảm ơn! – Laxmidi

+0

@Laxmidi Rất vui khi được trợ giúp. Đừng quên chấp nhận điều này như là câu trả lời đúng. – JeffryHouser

+0

+1 Vì tôi không thể chấp nhận câu trả lời :) – zawhtut

Các vấn đề liên quan