Nan*_*ner 10 grid jquery datasource filter kendo-ui
我希望能够通过函数动态更新过滤器值:
filter: [{
"field": "id_person",
"operator": "eq",
"value": GetIdPerson()
}]
Run Code Online (Sandbox Code Playgroud)
功能:
function GetIdPerson() {
try{
if (viewModel.get("SelectedMember").id_person > 0) {
return viewModel.get("SelectedMember").id_person;
}
} catch(ex) { }
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我调用datasource.read()时,函数没有被调用.
有没有更好的方法来实现这一目标?
或者,如果这是最好的方式,我做错了什么?
谢谢!
Ona*_*Bai 11
有一个用于在DataSource中设置(更新)过滤器的内置函数,请检查此项.所以实际上我不知道为什么你需要这个功能.做起来会更容易:
try{
if (viewModel.get("SelectedMember").id_person > 0) {
datasource.filter({
"field": "id_person",
"operator": "eq",
"value": viewModel.get("SelectedMember").id_person
});
}
} catch(ex) { }
Run Code Online (Sandbox Code Playgroud)
我的意思是,为原件定义/应用一个新的过滤器,datasource哪个条件是你想要的.
但是,当然没有什么能阻止您使用函数来获取过滤器的实际值,您可以这样做:
function GetIdPerson() {
try{
if (viewModel.get("SelectedMember").id_person > 0) {
return viewModel.get("SelectedMember").id_person;
}
} catch(ex) { }
return 0;
}
var datasource = new kendo.data.DataSource({
...
schema : {
model : {
fields: {
...
}
}
},
filter: {
"field": "id_person",
"operator": "eq",
"value": GetIdPerson()
}
});
Run Code Online (Sandbox Code Playgroud)
和/或
datasource.filter({
"field": "id_person",
"operator": "eq",
"value": GetIdPerson()
});
Run Code Online (Sandbox Code Playgroud)
这里有一个例子:http://jsfiddle.net/OnaBai/9gnsj/
如果您想基于超过字段值进行过滤,可以使用'和'运算符,否则使用'或'运算符.
现在我正在创建一个动态过滤器.
var filter = { logic: "and", filters: [] };
for(var index=0; index < totalPages; index++){
filter.filters.push({field: "name", operator: "eq", value: dynamic value here });
}
dataSource.filter(filter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45981 次 |
| 最近记录: |