0

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

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

4

1 回答 1

0

我有一个类似的问题,只能通过在一些 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>

希望这可以帮助。

于 2011-11-17T19:31:57.700 回答