lyon_fanfan 2009-07-21 15:08
浏览 216
已采纳

树 点击其他子节点 反复出现第一层节点内容 为什么?

代码如下:
function ShowQQ(UserID) {
//添加好友按钮
var QQForm_Button_AddPerson = new Ext.Button({
text: '添加'
, tooltip: '添加一个好友'
});
//删除好友按钮
var QQForm_Button_DeletePerson = new Ext.Button({
text: '删除'
, tooltip: '删除一个好友'
});
//好友面板
/*
function RetQQFriendListTree(Param_QQUserID, Param_GroupID) {
var strQQFriendListQuery = 'json/QQ/QQ.aspx?FunctionName=GetQQFriendListt&QQUserId=' + Param_QQUserID + '&QQGroupId=' + Param_GroupID;
var Return_QQForm_FriendPanel_TreePanel = new Ext.tree.TreePanel({
id: 'QQForm_FriendPanel_TreePanel'
, rootVisible: false
, lines: false
, title: '在线网友'
, border: false
, rootVisible: false
//构建节点
, loader: new Ext.tree.TreeLoader({ dataUrl: strQQFriendListQuery })
//构建树的根
, root: new Ext.tree.AsyncTreeNode({
id: 'QQ_' + UserID
, text: 'WebQQ_' + UserID
, draggable:false
, expanded:true
})
});
return Return_QQForm_FriendPanel_TreePanel;
};
*/
function RetQQFriendListTree(Param_QQUserID, Param_GroupID) {
var strQQFriendListQuery = 'json/QQ/QQ.aspx?FunctionName=GetQQFriendListt&QQUserId=' + Param_QQUserID + '&QQGroupId=' + Param_GroupID;

    return new Ext.tree.TreePanel({
    id: 'QQForm_FriendPanel_TreePanel'
        , rootVisible: false
        , lines: false
        , title: '在线网友'
        , border: false
        //构建树的根
        , root: new Ext.tree.AsyncTreeNode({
            id: '-1'
            , text: 'WebQQ_' + UserID
            , draggable: false
            , expanded: true
        })
        //构建节点
        , loader: new Ext.tree.TreeLoader({ dataUrl: strQQFriendListQuery })
    });
};    
var QQForm_FriendPanel_TreePanel = RetQQFriendListTree(UserID,-1);

var QQForm_FriendPanel = new Ext.Panel({
    id: 'QQForm_FriendPanel'
    , title: 'QQ好友'
    //,loader:'XXX''
    , autoScroll: true
    , rootVisible: false
    , items: [QQForm_FriendPanel_TreePanel]
});
//好友组面板
var QQForm_FriendGroupPanel = new Ext.Panel({
    id: 'QQForm_FriendGroupPanel'
    , title: '其他组'
    //,loader:'XXX''
    , autoScroll: true
    , rootVisible: false
});
//最近联系人面板
var QQForm_ResentFriendPanel = new Ext.Panel({
    id: 'QQForm_ResentFriendPanel'
    , title: '最近联系人'
    //,loader:'XXX''
    , autoScroll: true
    , rootVisible: false
});


//返回的webQQ窗口
var ReturnQQForm = new Ext.Window({
    resizable: false
    , id: UserID
    , title: 'WebQQ'
    , layout: 'card'
    , height: 450
    , width: 200
    , layout: 'accordion'
    , bbar: ['->', '-', QQForm_Button_AddPerson, '-', QQForm_Button_DeletePerson]
    , items: [QQForm_FriendPanel, QQForm_FriendGroupPanel, QQForm_ResentFriendPanel]
    , listeners: {
        'destroy': function(th) {
            var temp_QQButton = Ext.getCmp('id_QQButton');
            temp_QQButton.enable = true;
        }
    }
});
return ReturnQQForm;

}
效果如下:
[img]/upload/attachment/127393/416da2b0-3fb9-3e2a-a181-85d3f84fd570.gif[/img]

[b]问题补充:[/b]
那我这个应该怎么修改呢?
刚刚学习EXT对树结点点击的时候 会掉用那个函数 传入后台的参数是哪些 还是不很了解 能否也顺便解释一下哈 谢谢

  • 写回答

4条回答 默认 最新

  • zhoujuan520 2009-07-21 15:12
    关注

    很明显,你每次点击它都会去后台查询,但是你每次的查询条件都是一样,所以他每次返回的都是一样的.你在查询的时候要根据你但前点击的节点的id或者其他你自己定义的条件到后来查询,这样返回了不同的数据就回在你当前点击的节点下面增加

    反正他的逻辑就是你点哪里他就在哪里加,加什么,就要看你的查询结果了

    评论
  • zhoujuan520 2009-07-21 16:10
    关注

    你可以参考一下下面代码

    [code="js"]
    Ext.onReady(function(){

    var Tree = Ext.tree;

    //定义根节点的Loader
    var treeloader=new Tree.TreeLoader({dataUrl:'tree.jsp?DID=1'});

    //异步加载根节点
    var rootnode=new Tree.AsyncTreeNode({
    id:'1',
    text:'目录树根节点'
    });

    var treepanel = new Tree.TreePanel({
    //renderTo:"tree_div",//如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。
    el:'tree_div', //填充区域
    rootVisible:true, //隐藏根节点
    border:true, //边框
    animate:true, //动画效果
    autoScroll:true, //自动滚动
    enableDD:false, //拖拽节点

    containerScroll:true,
    loader:treeloader

    });

    //设置根节点
    treepanel.setRootNode(rootnode);

    //关键代码就在这里,每次你点击节点他都会去加载数据,这个时间就是在加载之前先截获他,然后设置加载器的条件,这样就可以了
    treepanel.on('beforeload',
    function(node){
    treepanel.loader.dataUrl='tree.jsp?DID='+node.id; //定义子节点的Loader

    });

    treepanel.render();

    rootnode.expand(false,false);
    });

    [/code]

    评论
  • chanball 2009-07-22 19:14
    关注

    后台要进行判断,点击节点的加号的时候,会传一个参数名为node的参数,你根据这个参数返回这个节点下的子节点,如果是叶子节点的话,请加上leaf:true这个就不会有加号出现了

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典
  • ¥15 multisim电路设计(相关搜索:设计报告)
  • ¥15 PC-lint Plus
  • ¥15 gpl24676注释
  • ¥15 php5.3内存泄露
  • ¥15 DigSilent如何复制复合模型到自己案例?
  • ¥15 求日版华为b610s-77a 官方公版固件,有偿