Estoy tratando de filtrar cierto contenido de un datagrid que tengo, el contenido se carga con MDM Zinc de una BD de Access, carga perfecto y todo va bien, pero al tratar de filtrar algun datos no lo hace, simplemente el boton no hace nada, les agradezco su valioso apoyo en este proyecto que me urge entregar en la universidad, les paso el código completo:
Código ActionScript :
var databaseFile:String = "ejemplo_agenda.mdb"; var databasePassword:String = ""; var path:String = mdm.Application.path+databaseFile; mdm.Database.MSAccess.connect(databaseFile,databasePassword); var success = mdm.Database.MSAccess.success(); if (success == false) { var msg:String = "No se puede conectar a la bbdd"; mdm.Dialogs.prompt(msg); return; } //FUNCION PARA HACER LA CONSULTA A LA BBDD function consulta(){ theDataGrid.removeAll(); var sqlString:String = "SELECT id,nombre,apellidos,telefono FROM ejemplo_agenda order by id asc"; // Ejecutamos la consulta sql mdm.Database.MSAccess.select(sqlString); // Comprobamos los errores var error:Boolean = (mdm.Database.MSAccess.error() == "true"); if (error) { var msg:String = "Ha ocurrido un error en la consulta!"; mdm.Dialogs.prompt(msg); return; } //Obtenemos los datos de la consulta var dataSet:Array = mdm.Database.MSAccess.getData(); var datos:Object; var newItemsArray:Array = new Array(); for (var i = 0; i<dataSet.length; i++) { datos = {}; datos.ID = parseInt(dataSet[i][0]); datos.Nombre = dataSet[i][1]; datos.Apellidos = dataSet[i][2]; datos.Telefono = dataSet[i][3]; newItemsArray.push(datos); } theDataGrid.dataProvider = newItemsArray; } //FUNCION PARA MONTAR EL DATAGRID function layoutGUI():Void { // Montamos el encabezado del datagrid theDataGrid.setStyle("fontSize",10); theDataGrid.columnNames = ["ID", "Nombre", "Apellidos", "Telefono"]; theDataGrid.vScrollPolicy = "auto"; var gridWidth:Number = theDataGrid.width; theDataGrid.getColumnAt(0).width = 0.05*gridWidth; theDataGrid.getColumnAt(0).headerText = "ID:"; theDataGrid.getColumnAt(1).width = 0.35*gridWidth; theDataGrid.getColumnAt(1).headerText = "Nombre:"; theDataGrid.getColumnAt(2).width = 0.45*gridWidth; theDataGrid.getColumnAt(2).headerText = "Apellidos:"; theDataGrid.getColumnAt(3).width = 0.15*gridWidth; theDataGrid.getColumnAt(3).headerText = "Telefono:"; theDataGrid.setStyle("alternatingRowColors", [0xFFFFFF, 0xF9FCFD]); } //Funcion para insertar un dato bot_insertar.onRelease=function(){ if(nombre_txt.text==""){ nombre_txt.text="Este campo no puede estar vacio"; }else{ mdm.Database.MSAccess.runQuery("INSERT INTO ejemplo_agenda (nombre,apellidos,telefono) VALUES ('"+nombre_txt.text+"','"+apellidos_txt.text+"',"+telf_txt.text+")"); consulta(); nombre_txt.text=""; apellidos_txt.text=""; telf_txt.text=""; } } //Borrado de datos bot_borrar.onRelease=function(){ LineaGrid = theDataGrid.selectedIndex; if(LineaGrid!=undefined){ var sqlString:String = "DELETE FROM ejemplo_agenda where id="+theDataGrid.getItemAt(LineaGrid).ID; mdm.Database.MSAccess.runQuery(sqlString); theDataGrid.removeItemAt(LineaGrid); consulta(); } } //Edicion de datos theDataGrid.addEventListener("change", editar); function editar(Obj) { bot_editar.enabled=true; //Obtiene los datos de la linea seleccionada DatosGrid = Obj.target.selectedItem; //Asigna valores de los campos de texto nombre_txt.text = DatosGrid.Nombre; apellidos_txt.text = DatosGrid.Apellidos; telf_txt.text = DatosGrid.Telefono; } bot_editar.onRelease=function(){ LineaGrid = theDataGrid.selectedIndex; var sqlString:String = "UPDATE ejemplo_agenda set nombre='"+nombre_txt.text+"', apellidos='"+apellidos_txt.text+"', telefono="+telf_txt.text+" where id="+theDataGrid.getItemAt(LineaGrid).ID; mdm.Database.MSAccess.runQuery(sqlString); consulta(); bot_editar.enabled=false; nombre_txt.text = ""; apellidos_txt.text = ""; telf_txt.text = ""; } //////////FILTRAR CONTENIDO filtrar_btn.onRelease=function(){ //Si no hay filtro lo ponemos y cambiamos el texto en el botón if (datos.filtered == false){ datos.filtered = true; datos.filterFunc(); filtrar_btn.label = "Quitar Filtro"; } //Si hay filtro lo quitamos y cambiamos el texto en el botón else if (datos.filtered == true){ datos.filtered = false; filtrar_btn.label = "Filtrar"; } //Función filterFunc de Flash datos.filterFunc = function(registro:Object) { return(registro.Nombre.nodeValue == texto_filtro.text); }; } //////////FIN DE FILTRO bot_editar.enabled=false; layoutGUI(); consulta();//Obtenemos los datos de la bbdd
El codigo de la funcion del filtro "que no funciona" especificamente es este:
Código ActionScript :
//////////FILTRAR CONTENIDO filtrar_btn.onRelease=function(){ //Si no hay filtro lo ponemos y cambiamos el texto en el botón if (datos.filtered == false){ datos.filtered = true; datos.filterFunc(); filtrar_btn.label = "Quitar Filtro"; } //Si hay filtro lo quitamos y cambiamos el texto en el botón else if (datos.filtered == true){ datos.filtered = false; filtrar_btn.label = "Filtrar"; } //Función filterFunc de Flash datos.filterFunc = function(registro:Object) { return(registro.Nombre.nodeValue == texto_filtro.text); }; } //////////FIN DE FILTRO
Gracias por su ayuda !!!