Extjs4 TreeGrid选择某个节点同时选中父节点与所有子节点,报错了
由于限制原因只能贴出这么多代码请大家帮忙小弟在此谢谢大家columns:[{xtype:'treecolumn',text:'中文名称',sortable:true,da...
由于限制原因 只能贴出这么多代码 请大家帮忙 小弟在此谢谢大家
columns: [{ xtype: 'treecolumn', text: '中文名称',sortable: true, dataIndex: 'MenuChnName',locked: true }]
用以下方法选择父节点与子节点报错
CheckMenuTree.on({
'selectionchange': function (node, checked) {
CheckMenuTree.expandAll();
//选择父节点
setPnode(node, checked);
//选择子节点
setCnode(node, checked);
}
});
function setPnode(node, checked) {
if (node.parentNode) {
var flg = 0;
node.parentNode.eachChild(function (child) {
if (child.get('checked')) {
node.parentNode.set('checked', true);
} else {
flg++;
if (flg == node.parentNode.childNodes.length) {
node.parentNode.set('checked', false);
}
}
});
setPnode(node.parentNode, checked);
}
}
function setCnode(node, checked) {
if (node) {
node.eachChild(function (child) {
child.set('checked', checked);
setCnode(child, checked);
});
}
} 展开
columns: [{ xtype: 'treecolumn', text: '中文名称',sortable: true, dataIndex: 'MenuChnName',locked: true }]
用以下方法选择父节点与子节点报错
CheckMenuTree.on({
'selectionchange': function (node, checked) {
CheckMenuTree.expandAll();
//选择父节点
setPnode(node, checked);
//选择子节点
setCnode(node, checked);
}
});
function setPnode(node, checked) {
if (node.parentNode) {
var flg = 0;
node.parentNode.eachChild(function (child) {
if (child.get('checked')) {
node.parentNode.set('checked', true);
} else {
flg++;
if (flg == node.parentNode.childNodes.length) {
node.parentNode.set('checked', false);
}
}
});
setPnode(node.parentNode, checked);
}
}
function setCnode(node, checked) {
if (node) {
node.eachChild(function (child) {
child.set('checked', checked);
setCnode(child, checked);
});
}
} 展开
1个回答
展开全部
选择某子节点时,要同时选择所选的父子点 以及 同等级的子节点,是吗?
如果是这样,会死循环的吧。。
如果不是这样,selectionchange 替换成 itemclick 试试。
如果是这样,会死循环的吧。。
如果不是这样,selectionchange 替换成 itemclick 试试。
追问
node.eachChild取不到值,我的想法是点击某个节点如果是父节点就循环取它下面的子节点同时循环取它以上所有的父节点,现在遇到的问题是如何判断node.parentNode它是否有父节点同时取它所有的子节点node.eachChild,在Tree可以取到,但是在TreeGrid中取不到了
追答
你用的是 Ext.tree.Panel 吧?
首先创建的时候 属性配置里要加 multiSelect : true 这个。
这个控件有个 previousNode 方法 和 getRootNode 方法。
看字面应该能知道意思吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询