问题背景:

界面使用左侧tree,右侧datagrid的布局。

点击左侧的树节点,右侧显示当前节点下的数据,右侧操作完以后左侧树的数据会发生改变,所以左侧的树需要刷新(reload)。

刷新完以后,树的选中状态没了。

解决办法:

思路:点击左侧树的节点时记录点击的nodeId,加载完以后重新选择该节点。

代码实现:

var nodeId;
$(function(){
    $('#tree').tree({
      url:url,
      checkbox:false,
      onClick:function(node){
        nodeId=node.id;
      },
      onLoadSuccess(data){
      	if(nodeId!=null){
      		var node = $('#tree').tree('find', nodeId);
			$('#tree').tree('expandTo', node.target).tree('select', node.target);
      	}
      }
    });
}) ;

刷新tree的数据:

$('#tree').tree('reload');

重新选择的代码必须放在onLoadSuccess方法里,否则不起作用