Kendo TreeView服务器端绑定选择第一个父子节点

时间:2013-10-04 16:16:07

标签: c# asp.net kendo-ui

我目前在我的MVC应用程序中使用Kendo Treeview并将其绑定到我的Model属性,这是一个从控制器构建的List类型。绑定与BindTo方法完美配合。

我在客户端或服务器端尝试做的是获取第一个父节点的第一个子节点,并在页面上加载时应用css k-state-selected(或其他方式)。但是我不确定将我的逻辑放入哪个事件。我曾尝试使用$(document).ready但是当时尚未定义treeview对象。

最好的方法是什么?

感谢。

2 个答案:

答案 0 :(得分:1)

您希望将逻辑放在 dataBound 事件中。将您的逻辑放在树视图的dataBound事件中将确保视图在页面上完全呈现,并且您将可以访问其所有元素。他们讨论了剑道网格视图here的类似情况。请参阅以下示例:

<div id="treeview"></div>

<script>
    $('#treeview').kendoTreeView({
        dataSource: [
            {
                text: 'foo',
                items: [
                    { text: 'bar' }
                ]
            }
        ],
        dataBound: function (e) {
            //get the tree view...
            var treeview = $('#treeview').data('kendoTreeView');

            //get first parent...
            var parentNode = treeview.dataSource.view()[0];

            //get first child...
            var childNode = parentNode.children.view()[0];

            //get item to select...
            var selectItem = treeview.findByUid(childNode.uid);

            //expand the tree and select the item...
            treeview.expand('.k-item');
            treeview.select(selectItem);
        }
    });
</script>

答案 1 :(得分:1)

Slump建议使用dataBound是一个很好的建议,但遗憾的是不适用于你在这里要完成的任务。

问题是您的控件是服务器端绑定的,因此HTML将在页面完全加载之前呈现,因此您将无法获取所需对象的实例。

如果您将文档准备好放在页面底部的脚本标记中,而不是TOP,那么您应该能够正确地检索该对象。