存储和远程过滤

时间:2015-08-05 13:21:06

标签: javascript extjs extjs5

我有一个商店,我想在beforequery事件中设置过滤器。

问题是我这样做的时候

store.addFilter({property:'name', value: 'xxx'});

actuall addFilter调用将发送一个请求,这是一个问题,因为它会再次触发beforequery事件。

所以我将supresevent参数添加到函数调用

store.addFilter({property:'name', value: 'xxx'}, true);

但是,在这种情况下,请求根本没有过滤器参数。

我错过了什么吗?

我想要的只是在beforequery事件中添加一个过滤器并让它做一个请求

2 个答案:

答案 0 :(得分:2)

我一直在努力解决类似情况下的问题。我想使用setFilter()方法在商店上设置过滤器。但是使用这种方法我遇到了商店两次触发加载事件。一个请求包括过滤器参数,另一个没有。

<强> Request1:

enter image description here

<强>请求2:

enter image description here

此行为导致我的组件中出现错误信息。经过一段时间的修补后,我遇到了我可以通过直接调用商店的filter()方法来绕过setFilter()方法。

<强>网格编码:

...
initComponent: function () {
    var me = this;

    me.callParent(arguments);
    me.getStore().filter([
        {
            property: someProperty,
            value: someValue
        }
    ]);
},
...

以这种方式应用过滤器已经解决了我的问题。我希望这对你也有帮助。

答案 1 :(得分:2)

商店里有一个名为<script type="text/javascript"> $('#example').dataTable({ //scrollY: "300px", //scrollX: false, //scrollCollapse : true, //"iDisplayLength": 100, //"iDisplayStart": 0, "bProcessing": true, "bServerSide": true, "sAjaxSource": "/UsersAPI/LoadUsers", //"sServerMethod": "POST", //"sAjaxDataProp": "", "aoColumns": [ { "mData": "Id", "sWidth": "10%" }, { "mData": "Email", "sWidth": "30%" }, { "mData": "FirstName", "sWidth": "25%" }, { "mData": "LastName", "sWidth": "25%" }, { "mData": "RoleName", "sWidth": "40%" }, { "mData": "AccountName", "sWidth": "40%" }, { "mRender": function (data, type, row) { //return data + ' ' + row[3]; return '<a href=' + '@Url.Action("Edit", "Users")?Email=' + row.Email + '>Edit</a>'; } }, { "mRender": function (data, type, row) { //return data + ' ' + row[3]; return '<a href=' + '@Url.Action("Delete", "Users")?Id=' + row.Id + '>Delete</a>'; } } ] }); 的商品。将其设置为false。这是一个私有财产,因此它不在文档中。