У меня есть фильтр в выпадающем списке с несколькими записями. Вместо того, чтобы фильтровать datagrid с точным соответствием, я хотел бы взять выбранное значение и отображать только те записи, где выбранное значение содержится в поле данных. Например: пользователь выбирает значение «Новый», а в datagrid отображаются записи, в которых содержимое записи может быть «Новый пользователь», «Новый человек», «Этот является новым» и т. Д. Я думаю, что мне нужно использовать RegExp, но я не могу разобраться, как заставить его работать. Спасибо заранее, S ...Flex: Фильтр datagrid с использованием значения combobox, которое содержится в поле данных
ответ
Что-то, как это должно работать:
функцияpublic function filter(item:Object):Boolean{
var result:Boolean=false;
if (item.name.toUpperCase().indexOf(cbo.selectedLabel.toUpperCase()) >= 0)
result=true;
return result;
}
Этот фильтр будет искать имя атрибута (или что вы хотите отфильтровать) из объекта, переданного с использованием в данный момент выбранный ярлык combobox, и если он найдет это значение, он вернет true. Поэтому, если он найдет слово «Новый» в любом месте строки, оно появится в datagrid. IE: «Новый человек», «Новый пользователь» будут отображаться после фильтрации.
Надеюсь, это то, что вы ищете.
Вы можете изменить это, чтобы создать функциональность фильтрации вниз. В настоящее время работает фильтрация текстовых полей. поэтому я отправляю его здесь.
объявить 2 строковые переменные tempString и tempString_Name затем ...
Используйте следующие 2 функции
private function filterByTerritory(item:Object):Boolean{
tempString = item.name;
tempString_Name = item.territory;
if((tempString.indexOf(sampleFilter.text,0) != -1) &&
(tempString_Name.indexOf(terrFilterTxt.text,0) != -1)){
return true;
}
else{
return false;
}
}
private function doFilter():void{
if((sampleFilter.text.length == 0) &&
(terrFilterTxt.text.length == 0)) {
myData.filterFunction == null;
}
else{
myData.filterFunction = filterByTerritory;
}
myData.refresh();
}
принимать данные через эти 2 текстовых
<mx:TextInput id="sampleFilter" change="doFilter()"/>
<mx:TextInput id="terrFilterTxt" change="doFilter()"/>
nutshell: call doFilte r на каком-то событии, на котором вы хотите, чтобы фильтрация произошла.
Скоро я опубликую фильтрацию datagrid на основе поля со списком. До свидания. Я скоро стану участником :)
это ужасно УДИВИТЕЛЬНО и лучше, чем все, что я видел, приближаясь к этому. Ради этого, ты спас мне такую суету, я чувствую, что я должен тебе обедать. – D3vtr0n 2010-09-10 20:19:11