首先说明一下,KenDoTreeview只负责显示树,新增、修改、保存、删除数据均在KenDoGrid中进行,(如果是在KenDoTreeview中进行新增、修改、保存、删除操作的话,不需要这么复杂,KenDoTreeview本身就会保持展开选中节点不变),每次对KenDoGrid中的数据进行操作后要对KenDoTreeview进行更新数据,本身是不会保持刷新前的节点展开选中的状态,一般情况下都会要求树的展开选中状态不变。
js部分:先定义一个变量数组A,KenDoTreeview展开节点时触发expand事件,获得该节点的id(是唯一性标识即可)追加到数组A中;KenDoTreeview关闭节点时触发collapse事件,获得该节点的id(是唯一性标识即可)并在数组A中删除这个id。把该数组A传入后台。
Java部分:接收js传过来的数组A。查询好数据,通过for循环判断数组A中是否包含第i条数据中的id,如果是则设置expanded字段为true。刷新后展开的节点不变。
选中节点不变,可以只在js部分实现。首先定义一个变量b,KenDoTreeview在每次选中节点时触发select事件,获取该节点的id。刷新KenDoTreeview后,在transport的read()中,通过id获取该条数据的uid,根据uid选中该节点。
下面只显示部分代码
js部分:
<div id="treeview"></div>
<script>
var nodeValues,parantOrgId;
function initTreeView () {
$("#treeView").kendoTreeView({
template: "#=item.name# #=item.code#<input type='hidden' value='#=item.id#'/><input type='hidden' value='#=item.name#'/><