以编程方式将过滤约束添加到Dojo增强型网格

时间:2011-09-22 21:21:14

标签: dojo dojox.grid

我在我的Dojox增强网格中添加了过滤插件。现在我想创建自己的约束,在没有用户输入的情况下过滤网格。如果我使用过滤插件,则会停用正常的grid.filter。

像dojox.grid.enhanced.plugins.filter.BooleanExpr这样的子类是否提供了这个功能,简单过滤器的语法(例如ID)是什么样的?

1 个答案:

答案 0 :(得分: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>

希望这有帮助。