关于ext的树的问题?

kkk444dsfsa 2011-10-26 02:48:22
用ext的TreePanel 从后台加载了一棵树,但是要加载的时候 把所有的节点展开(tree.expandAll()),如果没有展开的话 再次保存的时候 以前勾选保存的节点都获取不了,只有新选择的节点可以保存
贴出代码 请高手指正一下

function opensetpermit(id) {

var tree = new Ext.tree.TreePanel({
autoScroll: true,
renderTo: Ext.getBody(),
containerScroll: true,
root: new Ext.tree.AsyncTreeNode({ text: '组织机构', expanded: true, id: 'root' }),
loader: new Ext.tree.TreeLoader({
dataUrl: '../../DATA/getoratree.aspx?parentid=1&needcheck=true' + "&id=" + id,
requestMethod: 'GET'
}),
listeners: { click: function(node) {
if (node.id != '') {
}
}
}
});
//加载这段可以点击加号的时候不造成错误
tree.on('beforeload', function(node) {
if (node.id != '') {
tree.loader.dataUrl = '../../DATA/getoratree.aspx?needcheck=true&parentid=' + node.attributes.companyid + "&id=" + id;
}
});

tree.on('checkchange', function(node, flag) {
//获取所有子节点
node.cascade(function(node) {
node.attributes.checked = flag;
node.ui.checkbox.checked = flag;
return true;
});
//获取所有父节点
var pNode = node.parentNode;
for (; pNode.id != "root"; pNode = pNode.parentNode) {
if (flag || tree.getChecked(id, node.parentNode) == "") {
pNode.ui.checkbox.checked = flag;
pNode.attributes.checked = flag;
}
}
});
tree.expandAll();
var rootnod;
function mytoggleparent(node) {
if (node.id != 'root') {
node.ui.toggleCheck(true);
node.attributes.checked = true;
// alert(node.id);
// rootnode = node.parentNode.id;
mytoggleparent(node.parentNode);
}

};
var result = "";
var i = 0;
function mytoggleChecked(node) {
//迭代复选=>父节点影响子节点选择,子节点不影响父节点
if (node.hasChildNodes()) {
node.eachChild(function(child) {
if (child.attributes.checked == true) {
if (i > 0) {
result += ",";
}
result += (child.attributes.companyid);
i++;
}
mytoggleChecked(child); //处理子节点(第三级,有点晕阿)
})
}

};

var win = new Ext.Window({
width: 500,
height: 400,
layout: 'fit',
title: '访问网点授权',
items: [tree],
buttonAlign: "center",
buttons: [
{ text: '保存', handler: function() {
mytoggleChecked(tree.root);
//alert("result" + result);
Ext.Ajax.request({
url: '../../DATA/setAccfgsbm.aspx',
method: 'post',
params: { fgsbms: result, id: id },
success: function(result, request) {
Ext.MessageBox.alert('', "保存成功", function() {
win.close();
});
},
failure: function(result, request) {

}
})

}
},
{ text: '取消', handler: function() { win.close(); } }
]
});
win.show();
}
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkk444dsfsa 2011-11-06
  • 打赏
  • 举报
回复
谁帮忙看看?
huaye 2011-10-30
  • 打赏
  • 举报
回复
getChecked

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧