我有一个商店,我想在beforequery事件中设置过滤器。
问题是我这样做的时候
store.addFilter({property:'name', value: 'xxx'});
actuall addFilter调用将发送一个请求,这是一个问题,因为它会再次触发beforequery事件。
所以我将supresevent参数添加到函数调用
store.addFilter({property:'name', value: 'xxx'}, true);
但是,在这种情况下,请求根本没有过滤器参数。
我错过了什么吗?
我想要的只是在beforequery事件中添加一个过滤器并让它做一个请求
答案 0 :(得分:2)
我一直在努力解决类似情况下的问题。我想使用setFilter()
方法在商店上设置过滤器。但是使用这种方法我遇到了商店两次触发加载事件。一个请求包括过滤器参数,另一个没有。
<强> Request1:强>
<强>请求2:强>
此行为导致我的组件中出现错误信息。经过一段时间的修补后,我遇到了我可以通过直接调用商店的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。这是一个私有财产,因此它不在文档中。