jQuery MiniUI

 找回密码
 立即注册
查看: 6667|回复: 11
打印 上一主题 下一主题

懒树动态加载子节点失败 [复制链接]

Rank: 4

跳转到指定楼层
楼主
发表于 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就不执行?
还是有其他问题?

Rank: 4

沙发
发表于 2013-7-5 16:26:42 |只看该作者
在做自定义排序的时候也遇到这样的问题 json is error 后来是因为请求了服务器段导致, 去掉服务器段属性请求就可以了。 这个也会是请求了服务器端吗?

如果是 那么如何去掉呢

Rank: 4

板凳
发表于 2013-7-5 16:41:58 |只看该作者
有人知道吗   在线等啊 ~~~

Rank: 8Rank: 8

地板
发表于 2013-7-5 17:31:08 |只看该作者
dragon 发表于 2013-7-5 16:41
有人知道吗   在线等啊 ~~~

懒加载的话,url指向的后台方法应该返回的是你展开节点下的子节点,而不是整棵树。这样就实现懒加载了
具体参考我们的demo,后台方法在试用包里都是有的

Rank: 4

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

能不能不通过url获取子节点呢?
我想通过ajax获取数据,然后处理过加到当前节点下 ,可行吗?

Rank: 4

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

不是 通过你们示例返回数据实现懒加载,而是我们自己获取到节点,然后通过addNodes加到子节点。。哦。。

Rank: 4

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

你们那个数是不是不设置URL可能也会发送服务器端请求吗

Rank: 8Rank: 8

8#
发表于 2013-7-8 09:18:17 |只看该作者
dragon 发表于 2013-7-8 08:19
你们那个数是不是不设置URL可能也会发送服务器端请求吗

ajax返回子节点,然后addNodes()添加给父节点

Rank: 4

9#
发表于 2013-7-8 09:26:20 |只看该作者
factory 发表于 2013-7-8 09:18
ajax返回子节点,然后addNodes()添加给父节点

试过了,不行的
我在标签中设置的onbeforeload="onBeforeTreeLoad"
在onBeforeTreeLoad方法中通过addNodes()添加给父节点了,debug看到node下的children增加了
但是还是报错json is error

Rank: 4

10#
发表于 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设置同样的方法,点击节点之后,节点展开是正常的

Archiver|普加软件

GMT+8, 2024-11-27 06:25 , Processed in 1.048604 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部