use*_*123 0 javascript html5 nodes kendo-ui kendo-treeview
我正在使用Kendo UI控件做一个项目.在项目左侧"树视图"和右侧"kendogrid"被放置.
这里我的要求是基于树视图节点过滤网格,并且需要进行多选.
例如:eg:10249,10248基于此节点过滤网格.
这是我的小提琴:http://jsfiddle.net/RHh67/7/
这是尝试代码:
var tree= $("#treeview").kendoTreeView({
checkboxes: {
checkChildren: true
},
dataSource: [{
id: 1, text: "My Project", expanded: true, spriteCssClass: "rootfolder", items: [
{
id: 2, text: "OrderID", expanded: true, spriteCssClass: "folder", items: [
{ id: 3, text: "10248" },
{ id: 4, text: "10249" },
{ id: 5, text: "10250" },
{ id: 6, text: "10251" },
{ id: 7, text: "10252" }
]
}]
}]
}).data("kendoTreeView");
tree.dataSource.bind("change", function (e) {
var ds = $("#grid").data("kendoGrid").dataSource;
ds.filter([
{"logic":"or",
"filters":[
{
"field":"OrderId",
"operator":"eq",
}
]}
]);
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我找到我错在哪里吗?
该处理程序change
上tree
应做到:
就像是:
$("#treeview").on("change", function (e) {
var selected = $('#treeview :checked').closest('li');
var ds = grid.dataSource;
var filter = {
logic : "or",
filters: []
};
$.each(selected, function (idx, elem) {
var item = tree.dataItem(elem);
if (parseInt(item.text)) {
console.log("item.text", item.text);
filter.filters.push({
field : "OrderID",
operator: "eq",
value : parseInt(item.text)
});
}
});
console.log("filter", filter);
ds.filter(filter);
});
Run Code Online (Sandbox Code Playgroud)
在这里跑