2009-06-19 1 views
0

Я пытался отфильтровать сопоставитель данных со списком на основе значений в текстовых полях. Когда содержимое dataprovider меняет поле Combo, автоматически вызывает метод события изменения. Пожалуйста, найдите пример кода ниже.Ошибка ComboBox в ActionScript

Filter Utility Функция:

private function filterLocations(event:FocusEvent):void { 
    locationsList1.filterFunction = filterUtility; 
    locationsList1.refresh();       
} 

public function filterUtility(item:Object):Boolean { 
// pass back whether the location square foot is with in the range specified 

if((item.SQUARE_FOOTAGE >= rangeText1.text) && (item.SQUARE_FOOTAGE rangeText2.text)) 
    return item.SQUARE_FOOTAGE; 
} 

// THIS WOULD BE CALLED WHEN COMBO BOX SELECTION IS DONE 
private function selectLocationsReports(event:ListEvent):void { 
    selectedItem =(event.currentTarget as ComboBox).selectedItem.LOCATION_ID; 
} 

Когда DataProvider получает обновляется его автоматически вызывает метод изменения и кидала функцию нулевого указателя, потому что его преждевременно вызов выше метода selectLocationsReports и его ошибку метания.

Может кто-нибудь дать мне знать, как остановить событие CHANGE от распространения, когда обновляется датапровайдер.

ответ

0

Вы не можете остановить событие CHANGE, просто не добавляйте прослушиватель событий, если вы не готовы к событию. Я не вижу, где ваш прослушиватель событий для Event.CHANGE находится в коде выше.

Просто убедитесь, что вы не addEventListener(Event.CHANGE, selectLocationsReports), пока ваш ComboBox не будет готов к этому.

0

Другое дело (поверх ответа Кекоа) помещается инструкция if в обработчик события и проверяется, чтобы данные были там, прежде чем вы начнете работать с ним.

0

Удобный синтаксис я использую часто для этого

, если (dataprovidername) {

}

Смежные вопросы