动态插入KendoUI TreeView中的节点

时间:2012-11-13 16:12:05

标签: treeview kendo-ui

我有以下代码:

    var cnt = 0;
    $(document).ready(function () {
        var data = [
            {
                "id":  cnt++,
                "text":"node_" + cnt
            }
        ];
        var tree = $("#treeview").kendoTreeView({
            dataSource:kendo.observableHierarchy(data)
        }).data("kendoTreeView");

        $("#push").click(function () {
            var pos = tree.dataItem(tree.select());
            pos.items.push({id:cnt++, text:"node_" + cnt});
        });

        $("#append").click(function () {
            var pos = tree.select();
            tree.append({id:cnt++, text:"node_" + cnt}, pos);
        });

        $("#show").click(function () {
            var data = tree.dataItem(".k-item:first");
            $("#content").html(JSON.stringify(data, null, 2));
        });
    });

有两个功能: 1. push:一旦选择了树中的一个节点,它就使用dataItem来获取当前数据项并将一个额外的节点推入其中(子节点)。这应该是有效的,因为dataSource是一个ObservableHierarchy对象。 2. append:一旦选择了树中的一个节点,它就使用append将一个额外的节点引入其中(子节点)。这在KendoUI的先前版本中有效并修改了树,但不应反映DataSource中的更改。

问题/问题是: 1.如果我使用append,树更新(可视),但dataItem不会更新。 2.如果我使用push,则dataItem是更新但不是树。 3.如果我选择一个节点,使用append然后按,树会在视觉上更新,模型也是。

似乎我第一次引入一个子append更新了一些内部结构,并且从那里树'观察'如果我直接推送它就可观察到的层次结构,那么树就不会观察到可观察的层次结构。

如何动态插入节点以检查DataSource并获取树的当前状态?

注意这是最新版本的KendoUI Q2.1024。

2 个答案:

答案 0 :(得分:1)

好的,我在2天后得到了关于此事的罚单。 确实是 BUG 已在最新版本中修复,但构建仅 可供有效订阅的客户使用...

它将在下一个正式版本(2013年3月左右)中供社区其他人使用。所以目前唯一的解决方案是购买商业订阅,您将立即获得新版本......

有点失望所有这些商业资料,因为这是一个错误 ..但无论如何,我们无能为力...... 至少我们知道我们并不疯狂,几个月后我们可以用固定版本替换我们的代码。 :P

答案 1 :(得分:0)

有点我的问题,因为append根本不更新dataSource,而push更新dataSource,它只在我第一次添加节点时这样做,我甚至不能选择那个节点,直到我保存dataSource并刷新页面。(或者我得到pos.items is undifined错误)

到目前为止我的意思是,我们可以使用push方法将child-node添加到dataSource,并尝试每次通过treeview.dataSource.get(treeview.select()).load()

根据此处的文件http://docs.kendoui.com/documentation/api/framework/node

如果我们可以get选定的节点,我们可以强行加载它的子节点。但到目前为止,我还无法让datasource.get()dataSource.view()[]读取所选节点。 / p>

PS我知道这不是一个完整的答案,但也许有帮助..