我使用KendoUI的樹視圖,並希望給用戶過濾它的可能性。 甚至有一個演示,做我想要的(http://demos.kendoui.com/web/treeview/api.html)KendoUI過濾器TreeView
問題是該過濾器只適用於TreeView的第一層次,所以如果過濾文本存在於小孩而不是父項中,那麼該小孩將不會顯示。
實施例:
- 項目1
- 項目2
- 項目XZY
- 品ABC
如果搜索文本將是 「ABC」,沒有項目將被顯示。相反,我想有以下結果:
- 項目2
- 項目ABC
有誰知道如何做到這一點?這是我使用的代碼:
var tree_view_data = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "getall/items",
dataType: "json"
}
},
schema: {
model: {
children: "ChildItems"
}
}
});
//init tree view itself
var $treeview = $("#div-treeview").kendoTreeView({
dataSource: tree_view_data,
dataTextField: [ "Text", "ChildrenText" ]
});
//allow filter of navigation tree
var refreshTree = function() {
tree_view_data.filter({
field: "Text", //if I would use "ChildrenText" here nothing be displayed at all if filtertext is set
operator: "contains",
value: $("#tree-text-search").val()
});
};
$("#tree-text-search").change(refreshTree).keyup(refreshTree);
看來,它只能如果存在一個節點(需要調整處理時,有與相同的文本多個節點的情況下)與文本與過濾文本完全匹配。假設節點文本是「Item abc」,並且用戶輸入「abc」作爲過濾器文本,則findByText(「abc」)會返回null,因爲它會嘗試匹配確切的節點文本。糾正我,如果我的假設是錯誤的。 –
的確如此。如果你需要鬆散地匹配節點,你可以像這樣使用[jQuery contains selector](http://api.jquery.com/contains-selector/):'$(「。k-in:contains('photo ')「)' –
試過jQuery包含選擇器,但問題是它只搜索展開的節點(以HTML呈現)並且不會與摺疊節點的子節點相匹配。任何其他的替代方案? –