kendo treeview mvc - 单击节点时出错

时间:2014-08-19 10:11:25

标签: c# asp.net-mvc kendo-ui treeview

当我尝试单击TreeView中的某个节点时,我在kendo.all.min.js中收到错误 - 有人知道我是否需要进一步配置它以避免这种情况?

我得到的错误是:

JavaScript runtime error: Unable to get property 'set' of undefined or null reference

并且VS出错时突出显示的粗略区域是:

return arguments.length?(n=e(n,r).closest(q),r.find(".k-state-selected").each(function(){var e=i.dataItem(this);e.set("selected",!1),delete e.selected}),n.length&&i.dataItem(n).set("selected",!0)...

我之后的内容基本上是父文件夹中的文件列表,如果该文件处于活动状态并且有子文件,那么我希望它为其提供一个URL,以便他们可以打开链接,但如果没有,我不想发生任何事情,但我不想完全禁用该节点,因为我希望用户能够扩展它或在需要时收缩它。

以下是我在MVC中使用树视图的代码:

@(Html.Kendo().TreeView()
    .Name("treeview")
    .Items(level1 =>
    {
        level1.Add().Text(rootFolderName)
        .SpriteCssClasses("folder")
        .Expanded(true)
        .Items(level2 =>
        {
            int count = 0;
            foreach (var node in list)
            {
                string title = node.Title;
                string url = "";
                if (node.HasChildren)
                {
                    title = node.Title + "(" + node.ChildrenCount + ")";
                    url = "/Secure/Areas/Compliance.aspx?id=" + node.ItemId;
                }
                level2.Add().Text(title).Url(url)
                .Expanded(true);
            }
        });
    })
)

之前有人使用过这些,并知道我还需要做些什么才能实现我的目标?

1 个答案:

答案 0 :(得分:0)

好的,我去的时候学得更多。结束使用这样的事件:

@(Html.Kendo().TreeView()
    .Name("treeview")
    .Events(events => events
        .Select("onSelect")
        )
    .Items(level1 =>

然后如果网址为空则添加preventDefault

function onSelect(e) {
        var dataItem = $('#treeview').data('kendoTreeView').dataItem(e.node);
        if (dataItem.href == 'undefined')
            e.preventDefault();
        else
            location.href = dataItem.href;
    }

可能有更好的方法,但这似乎有效,所以我现在很开心。