javascript dojo dojox.grid

javascript - Filtro Dojo DataGrid utilizando una AndOrReadStore: ¿qué estoy haciendo mal?



dojox.grid (2)

Tengo el siguiente código trabajando con un DataGrid que tiene dos columnas Column_A y Column_B respectivamente:

grid.filter({Column_A: ''*test*'', Column_B: ''*''}, true)

Este código funciona bien y encuentra todas las filas donde Column_A tiene la palabra test en él ... ahora, me gustaría hacer lo mismo pero mirar en cualquier columna ... la coma se traduce en una operación Y pero estoy buscando una operación OR.

Leí las especificaciones de AndOrReadStore y, en mi opinión, debería poder hacer algo como esto:

grid.filter({complexQuery: "Column_A: ''*test*'' OR Column_B: ''*''"}, true)

sin embargo, esto no funciona y no obtengo ningún resultado ... Ni siquiera puedo hacer que funcione con una columna, como esta

grid.filter({complexQuery: "Column_A: ''*test*''"}, true)

¿Qué estoy haciendo mal?

Gracias


Aquí hay un ejemplo programático que funciona (haga clic en el botón para invocar el filtro: Column_A contiene un e OR Column_B es 300):

el JavaScript (script.js):

dojo.require("dijit.layout.ContentPane"); dojo.require("dijit.form.Button"); dojo.require("dojox.grid.DataGrid"); dojo.require(''dojox.data.AndOrReadStore''); dojo.ready(function(){ var appLayout = new dijit.layout.ContentPane({ id: "appLayout" }, "appLayout"); var data = { ''items'': [ {''Column_A'': ''alpha'', ''Column_B'': ''100''}, {''Column_A'': ''beta'', ''Column_B'': ''200''}, {''Column_A'': ''gamma'', ''Column_B'': ''300''}, {''Column_A'': ''delta'', ''Column_B'': ''400''} ] }; var store = new dojox.data.AndOrReadStore({ data: data }); var layout = [[ {name : ''A'', field : ''Column_A'', width : ''125px''}, {name : ''B'', field : ''Column_B'', width : ''100%''} ]]; var grid = new dojox.grid.DataGrid({ structure : layout, store: store, queryOptions: {ignoreCase: true} }); var filterButton = new dijit.form.Button({ label: "Filter", onClick: function () { grid.filter({complexQuery: "Column_A: ''*e*'' OR ''Column_B: ''300''"}); } }); filterButton.placeAt(appLayout.domNode); grid.placeAt(appLayout.domNode); appLayout.startup(); });

Y ahora el html (index.html)

<html lang="en"> <head> <meta charset="utf-8"> <title>DataGrid with AndOrReadStore</title> <link rel="stylesheet" href="style.css" media="screen"/> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css" /> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/document.css" /> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojox/layout/resources/ExpandoPane.css" /> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojox/grid/resources/claroGrid.css"> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojox/grid/enhanced/resources/claro/EnhancedGrid.css"> <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" type="text/javascript"></script> <script src="script.js" type="text/javascript"></script> </head> <body class="claro"> <div id="appLayout"></div> </body> </html>

Y finalmente el css (style.css)

html, body { width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; } #appLayout { width: 100%; height: 100%; }