Resulta que aqui ago un filtro entre combobox y funciona exelente pero i codigo que adapte a base de datos no funciona aqui el ejemplo
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="400" minHeight="600"
width="400" height="370" xmlns:flexlib="http://code.google.com/p/flexlib/"
creationComplete="this_creationCompleteHandler()"
viewSourceURL="srcview/index.html">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
import mx.utils.StringUtil;
//variable en la que guardaremos el token a buscar
private var str2search:String = "";
//dejamos la variable como Bindable para que detecte automaticamente los cambios al proveedor
[Bindable]private var acDataProvider:ArrayCollection;
[Bindable]private var acDataProvider2:ArrayCollection;
protected function this_creationCompleteHandler():void
{
//llenamos con informacion falsa el proveedor
//este proveedor tambien podria ser llenado desde una Base de Datos, XML, etc
acDataProvider = new ArrayCollection([
{nombre: "Daniel", nick: "master_of_puppetz", clablevel: 24243},
{nombre: "Alberto", nick: "betornillo", clablevel: 15431},
{nombre: "Juan", nick: "jhonny", clablevel: 76453},
{nombre: "Miguel", nick: "mickey", clablevel: 2151345},
{nombre: "Luis", nick: "lucho", clablevel: 3245},
{nombre: "Carlos", nick: "charly", clablevel: 1235345},
{nombre: "Oscar", nick: "lirask8", clablevel: 3452},
{nombre: "Giovanni", nick: "giolink", clablevel: 1234234}
]);
acDataProvider2 = new ArrayCollection([
{nombre: "Daniel", nick: "master_of_puppetz", clablevel: 24243},
{nombre: "Alberto", nick: "betornillo", clablevel: 15431},
{nombre: "Juan", nick: "jhonny", clablevel: 76453},
{nombre: "Miguel", nick: "mickey", clablevel: 2151345},
{nombre: "Luis", nick: "lucho", clablevel: 3245},
{nombre: "Carlos", nick: "charly", clablevel: 1235345},
{nombre: "Oscar", nick: "lirask8", clablevel: 3452},
{nombre: "Giovanni", nick: "giolink", clablevel: 1234234}
]);
}
/**
* Este metodo se disparara cada vez que se escriba algo en la caja de texto de busqueda
*/
protected function tiBuscar_changeHandler(event:Event):void
{
//recuperamos el texto de la caja de busqueda y lo convierto a minusculas
str2search = StringUtil.trim(tiBuscar.selectedItem.nick).toLowerCase();
//validamos que no este vacia
if (str2search != "")
{
//si no esta vacia, aplicamos la funcion
acDataProvider.filterFunction = busca;
}
else
{
//si esta vacia, quitamos la funcion de filtrado
acDataProvider.filterFunction = null;
}
//despues de cualquier filterFunction, se tiene que aplicar el metodo refresh
acDataProvider.refresh();
}
private function busca(item:Object):Boolean
{
//variable de retorno
var ret:Boolean = false;
//variable que almacenara el nombre de cada indice del elemento
var p:String = "";
//variable que almacenara el valor del elemento
var str:String = "";
//recorro cada indice del elemento
for (p in item)
{
//no quiero que busque en la propiedad mx_internal_uid
if (p != "mx_internal_uid")
{
//recupero el valor del elemento y lo convierto a minusculas
str = String(item[p]).toLowerCase();
//veo si la cadena de busqueda existe en el valor del elemento
if (str.indexOf(str2search) != -1)
{
//si existe, regreso un true para que el elemento sea agregado al proveedor
ret = true;
//termino el ciclo, no hay necesidad de seguir buscando
break;
}
}
}
//regreso el valor Boolean
return ret;
}
]]>
</fx:Script>
<s:ComboBox dataProvider="{acDataProvider}" labelField="nick" width="100%"/>
<s:ComboBox width="220" id="tiBuscar" dataProvider="{acDataProvider2}" labelField="clablevel" change="tiBuscar_changeHandler(event)" />
</s:Application>
y este es mi codigo con base de datos que puede ser??
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="400" minHeight="600"
width="400" height="370"
viewSourceURL="srcview/index.html" xmlns:sexoservice="services.sexoservice.*" xmlns:filtroservice="services.filtroservice.*" xmlns:ns1="*">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.utils.StringUtil;
//variable en la que guardaremos el token a buscar
private var str2search:String = "";
/**
* Este metodo se disparara cada vez que se escriba algo en la caja de texto de busqueda
*/
protected function tiBuscar_changeHandler(event:Event):void
{
//recuperamos el texto de la caja de busqueda y lo convierto a minusculas
str2search = StringUtil.trim(tiBuscar.selectedItem.sexo).toLowerCase();
//validamos que no este vacia
if (str2search != "")
{
//si no esta vacia, aplicamos la funcion
getAllFiltroResult.lastResult.filterFunction = busca;
}
else
{
//si esta vacia, quitamos la funcion de filtrado
getAllFiltroResult.lastResult.filterFunction = null;
}
//despues de cualquier filterFunction, se tiene que aplicar el metodo refresh
getAllFiltroResult.lastResult.refresh();
}
private function busca(item:Object):Boolean
{
//variable de retorno
var ret:Boolean = false;
//variable que almacenara el nombre de cada indice del elemento
var p:String = "";
//variable que almacenara el valor del elemento
var str:String = "";
//recorro cada indice del elemento
for (p in item)
{
//no quiero que busque en la propiedad mx_internal_uid
if (p != "mx_internal_uid")
{
//recupero el valor del elemento y lo convierto a minusculas
str = String(item[p]).toLowerCase();
//veo si la cadena de busqueda existe en el valor del elemento
if (str.indexOf(str2search) != -1)
{
//si existe, regreso un true para que el elemento sea agregado al proveedor
ret = true;
//termino el ciclo, no hay necesidad de seguir buscando
break;
}
}
}
//regreso el valor Boolean
return ret;
}
protected function tiBuscar_creationCompleteHandler(event:FlexEvent):void
{
getAllSexoResult.token = sexoService.getAllSexo();
}
protected function comboBox_creationCompleteHandler(event:FlexEvent):void
{
getAllFiltroResult.token = filtroService.getAllFiltro();
}
]]>
</fx:Script>
<fx:Declarations>
<s:CallResponder id="getAllSexoResult"/>
<sexoservice:SexoService id="sexoService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
<s:CallResponder id="getAllFiltroResult"/>
<filtroservice:FiltroService id="filtroService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
<s:CallResponder id="getAllFiltroResult2"/>
</fx:Declarations>
<s:ComboBox width="220" id="tiBuscar" labelField="sexo" dataProvider="{getAllSexoResult.lastResult}" change="tiBuscar_changeHandler(event)" creationComplete="tiBuscar_creationCompleteHandler(event)"/>
<s:ComboBox dataProvider="{getAllFiltroResult.lastResult}" labelField="sexo" width="100%" creationComplete="comboBox_creationCompleteHandler(event)"/>
</s:Application>