用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();
}
贴出代码 请高手指正一下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();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货