用于树视图的Kendo Hierarchical Datasource,过滤到已检查的节点

时间:2012-11-21 06:22:16

标签: datasource kendo-ui kendo-treeview

我正在使用Kendo Hierarchical Datasource用于Kendo UI Treeview。 在单击事件上,我想只在数据源中保留已检查的roms。

我试过

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

但无济于事。

我有正确的字段吗?

另外,对于奖励积分,我该如何删除过滤器?

1 个答案:

答案 0 :(得分:3)

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仅对当前级别起作用(例如,参见此question)。

对于您的红利问题,要删除过滤器,只需应用以下代码:

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

(在您的层次结构的所有级别上都与之前相同!)。


修改

以下是使用过滤器的小提琴:http://jsfiddle.net/scaillerie/RHh67/