Kendo Hierarchical Datasource для дерева, фильтр к проверенным узлам

Я использую иерархический источник данных Kendo для Kendo UI Treeview. В случае щелчка я хочу оставить только проверенные ромы в источнике данных.

Я старался

    $('#treeview')
         .getKendoTreeView()
         .dataSource
         .filter({ 
                  field: "checked", 
                  operator: "eq", 
                  value: true });

Но безрезультатно.

У меня есть правильное поле?

Кроме того, для бонусных баллов, как удалить фильтр?

1 ответ

Решение

checked правильное поле, если вы определили его в шаблоне так:

$("#treeview").kendoTreeView({
    checkboxes: { template: "<input type='checkbox' name='checkedNodes' #= item.isChecked ? 'checked' : '' # value='#= item.id #' />" },
    dataSource: [{ 
        id: 1, text: "My Documents", expanded: true, spriteCssClass: "rootfolder", items: [
            { id: 2, text: "about.html", expanded: true, isChecked: false, spriteCssClass: "folder" },
            { id: 3, text: "index.html", expanded: true, isChecked: true, spriteCssClass: "folder" }
        ]
     }]
});

в моем случае это называется isChecked (увидеть item.isChecked в моем коде).

Но, чтобы правильно фильтровать, будьте осторожны: filter действует только на текущем уровне (см., например, этот вопрос).

И для вашего бонусного вопроса, чтобы удалить фильтр, просто примените следующий код:

$('#treeview')
     .data("kendoTreeView")
     .dataSource
     .filter({ });

(так же, как и раньше на всех уровнях в вашей иерархии!).


редактировать

Вот некоторая скрипка, чтобы поиграть с фильтром: http://jsfiddle.net/scaillerie/RHh67/.

Другие вопросы по тегам