代码如下:
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对树结点点击的时候 会掉用那个函数 传入后台的参数是哪些 还是不很了解 能否也顺便解释一下哈 谢谢
[url]http://download.csdn.net/source/907700[/url]
[url]http://www.coderhome.net/code/index.php?id=108[/url]
[url]http://yourgame.iteye.com/blog/353361[/url] 我的网络硬盘里面也用到了这些技术,动态从服务器获得子节点,我的是动态从服务器获得指定文件夹下面的文件目录
很明显,你每次点击它都会去后台查询,但是你每次的查询条件都是一样,所以他每次返回的都是一样的.你在查询的时候要根据你但前点击的节点的id或者其他你自己定义的条件到后来查询,这样返回了不同的数据就回在你当前点击的节点下面增加
反正他的逻辑就是你点哪里他就在哪里加,加什么,就要看你的查询结果了
你可以参考一下下面代码
[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]
后台要进行判断,点击节点的加号的时候,会传一个参数名为node的参数,你根据这个参数返回这个节点下的子节点,如果是叶子节点的话,请加上leaf:true这个就不会有加号出现了