2011-09-22 48 views
0

我向我的Dojox增强网格添加了过滤插件。现在我想创建自己的约束条件,在没有用户输入的情况下过滤网格。如果我使用过滤插件,则正常的grid.filter将被禁用。以编程方式向Dojo增强网格添加过滤约束条件

像dojox.grid.enhanced.plugins.filter.BooleanExpr这样的子类是否提供该功能,以及简单过滤器的语法(如ID)的外观如何?

回答

0

我有一个similar problem,只能通过在一些jQuery的帮助下定期在后台运行网格过滤器来解决它。我相信这种方法可能适用于你想要做的事情。下面是一些示例代码:

加入jQuery的:

<script src="http://code.jquery.com/jquery-latest.js"></script> 

在页面<head>将这个:

<script type="text/javascript"> 
    $(document).ready(function() { 
     function filterTheDataGrid() { 
      if (dijit.byId("grid") != undefined) { 
       dijit.byId("grid").filter({color: "Red"}); 
      } 
     } 
    // Run filterTheDataGrid every 1000 milliseconds // 
    // Lower 1000 for faster refreshing, maybe to 500 milliseconds // 
    var refreshDataGrid = setInterval(function() { filterTheDataGrid(); }, 1000); 
    } 
</script> 

这:

<script type="text/javascript"> 
    // Setup the layout for the data // 
    var layoutItems = [[ 
     { 
      field: "id", 
      name: "ID", 
      width: '5px', 
      hidden: true 
     }, 
     { 
      field: "color", 
      name: "Color", 
      width: '80px' 
     } 
    ]]; 

    // Create an empty datastore // 
    var storeData = { 
     identifier: 'id', 
     label: 'id', 
     items: [] 
    } 
    var store3 = new dojo.data.ItemFileWriteStore({data : storeData}); 
</script> 

在将这个<html>的页面:

<div id="grid" dojoType="dojox.grid.DataGrid" jsId="grid5" store="store3" structure="layoutItems" query="{ type: '*' }" clientSort="true" rowsPerPage="40"></div> 

这:

<script type="text/javascript"> 
function addItemToGrid(formdata) { 
    // This function is called by a dialog box and gets form data passed to it // 
    var jsonobj = eval("(" + dojo.toJson(formData, true) + ")"); 

    var myNewItem = { 
     id: transactionItemID, 
     color: jsonobj.color 
    }; 
    // Insert the new item into the store: 
    store3.newItem(myNewItem); 
    store3.save({onComplete: savecomplete, onError: saveerror}); 
} 
</script> 

希望这有助于。

+0

我实际上修改了我的代码并创建了一个备用答案,以便过滤器不会每x毫秒不必要地运行,而是只在将新项添加到数据网格后运行。 [CLICK HERE](http://stackoverflow.com/questions/8172447/dojo-setquery-on-datagrid-all-items-disappear/8216950#8216950) –

相关问题