我目前在我的 MVC 应用程序中使用 Kendo Treeview 并将其绑定到我的 Model 属性,该属性是从控制器构建的 List 类型。绑定与 BindTo 方法完美配合。
我试图在客户端或服务器端做的是获取第一个父级的第一个子级并在页面上加载时应用 css k-state-selected(或执行此操作的另一种方式)。但是我不确定将我的逻辑放入哪个事件。我尝试使用 $(document).ready 但是此时尚未定义树视图对象。
解决这个问题的最佳方法是什么?
谢谢。
您希望将逻辑放在dataBound事件中。将您的逻辑放在树视图的 dataBound 事件中将确保视图在页面上完全呈现,并且您将可以访问它的所有元素。他们在这里讨论了剑道网格视图的类似情况。请参见以下示例:
<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>
Slump 关于使用 dataBound 的建议是一个很好的建议,但不幸的是,它不适用于您在此处尝试完成的任务。
问题是您的控件是服务器端有界的,因此 HTML 将在页面完全加载之前呈现,因此您将无法获取所需对象的实例。
如果您将文档准备好放在页面底部的脚本标记中,而不是顶部,您应该能够正确检索对象。