jQuery MiniUI

标题: 懒树动态加载子节点失败 [打印本页]

作者: dragon    时间: 2013-7-5 13:57:55     标题: 懒树动态加载子节点失败

本帖最后由 dragon 于 2013-7-5 14:16 编辑

我在做树的懒加载的时候,通过ajax获取了树的第一层节点,通过loadData方法加载,所有包含子节点的节点设置了isLeaf = false, expended = false,在页面上设置了onbeforeload="onBeforeTreeLoad" ,
<ul id="tree1"  class="mini-tree"  style="width:100%;"
                showTreeIcon="true" textField="long_name" idField="id"   resultAsTree="false"  
           
             >   
            </ul>


(晕死,为什么这两行粘贴不上:onbeforeload="onBeforeTreeLoad"
           )
在onBeforeTreeLoad方法中我通过ajax获取当前节点的子节点data,并通过方法tree.addNodes(data,node); 加入到当前节点下面
function onBeforeTreeLoad(e) {
    var tree = e.sender;     //树控件
    var node = e.node;  //当前节点
    var tree_url = url +"&queryCondition.WherepParameterValues=" + e.node.id + "&pageSize=1000";
//    alert(tree_url);
    $.ajax({
        type:"post",
        url:tree_url,
        success:function(json){
        
          var recv = json.queryResult;
          var data = recv.resultList;
          if(data.length > 0){
              tree.addNodes(data,node);
          }
        },
        dataType:"json"
     
     });

然后问题就来了,提示”json is error"

我猜测应该是miniui查找当前节点子节点获得的json数据是错误的,但我不知道它是怎么获取数据的,我在debug的时候看到在tree.addNodes(data,node);执行后node下面多了一个children,对应的一个是data的数组。
我看demo中是通过url来获取子节点的,返回的也是一个子节点的json,
我是要通过ajax来获取,需要设置什么东西吗?还是回调函数找不到url就不执行?
还是有其他问题?


作者: dragon    时间: 2013-7-5 16:26:42

在做自定义排序的时候也遇到这样的问题 json is error 后来是因为请求了服务器段导致, 去掉服务器段属性请求就可以了。 这个也会是请求了服务器端吗?

如果是 那么如何去掉呢
作者: dragon    时间: 2013-7-5 16:41:58

有人知道吗   在线等啊 ~~~
作者: factory    时间: 2013-7-5 17:31:08

dragon 发表于 2013-7-5 16:41
有人知道吗   在线等啊 ~~~

懒加载的话,url指向的后台方法应该返回的是你展开节点下的子节点,而不是整棵树。这样就实现懒加载了
具体参考我们的demo,后台方法在试用包里都是有的
作者: dragon    时间: 2013-7-8 08:01:50

factory 发表于 2013-7-5 17:31
懒加载的话,url指向的后台方法应该返回的是你展开节点下的子节点,而不是整棵树。这样就实现懒加载了
具 ...

能不能不通过url获取子节点呢?
我想通过ajax获取数据,然后处理过加到当前节点下 ,可行吗?
作者: dragon    时间: 2013-7-8 08:12:15

factory 发表于 2013-7-5 17:31
懒加载的话,url指向的后台方法应该返回的是你展开节点下的子节点,而不是整棵树。这样就实现懒加载了
具 ...

不是 通过你们示例返回数据实现懒加载,而是我们自己获取到节点,然后通过addNodes加到子节点。。哦。。
作者: dragon    时间: 2013-7-8 08:19:18

dragon 发表于 2013-7-8 08:12
不是 通过你们示例返回数据实现懒加载,而是我们自己获取到节点,然后通过addNodes加到子节点。。哦。。 ...

你们那个数是不是不设置URL可能也会发送服务器端请求吗
作者: factory    时间: 2013-7-8 09:18:17

dragon 发表于 2013-7-8 08:19
你们那个数是不是不设置URL可能也会发送服务器端请求吗

ajax返回子节点,然后addNodes()添加给父节点
作者: dragon    时间: 2013-7-8 09:26:20

factory 发表于 2013-7-8 09:18
ajax返回子节点,然后addNodes()添加给父节点

试过了,不行的
我在标签中设置的onbeforeload="onBeforeTreeLoad"
在onBeforeTreeLoad方法中通过addNodes()添加给父节点了,debug看到node下的children增加了
但是还是报错json is error
作者: dragon    时间: 2013-7-8 09:52:53

dragon 发表于 2013-7-8 09:26
试过了,不行的
我在标签中设置的onbeforeload="onBeforeTreeLoad"
在onBeforeTreeLoad方法中通过addNode ...

<ul id="tree1" class="mini-tree"  style="width:100%;"
                showTreeIcon="true" textField="long_name" idField="id" parentField="parent_id" resultAsTree="false"
                onbeforeload="onBeforeTreeLoad"
            onnodeselect="onBeforeTreeLoad">   
            </ul>

我的第一层节点也是通过ajax加载进来的,用的loadData()
现在的问题是onbeforeTreeLoad方法对当前节点的操作并没有起到效果,
在onnodeselect设置同样的方法,点击节点之后,节点展开是正常的

作者: factory    时间: 2013-7-8 10:12:00

dragon 发表于 2013-7-8 09:26
试过了,不行的
我在标签中设置的onbeforeload="onBeforeTreeLoad"
在onBeforeTreeLoad方法中通过addNode ...

建议你还是按照我们的demo方式去做,是最简单方便的。
如果你确实需要自己ajax去做的话,在后台给父节点增加 node["asyncLoad"] = false;

这样你点击这个节点就不会去自动懒加载了,如果你不加这个,节点是默认会进行一个懒加载,所以导致出现了你说的“json is error”的提示
作者: dragon    时间: 2013-7-8 11:12:46

factory 发表于 2013-7-8 10:12
建议你还是按照我们的demo方式去做,是最简单方便的。
如果你确实需要自己ajax去做的话,在后台给父节点 ...

ok,问题解决了,非常感谢




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2