var treePanel = new Ext.tree.TreePanel({
border:true,
autoScroll:true,
animate:true,
autoWidth:true,
enableDD:true,
width:280,
height:300,
containerScroll: true,
loader: new Ext.tree.TreeLoader({
dataUrl:'../contCondition.do?action=getMatTree'
})
});
var root = new Ext.tree.AsyncTreeNode({
text: '物料类别', //节点名称
checked:false,
draggable:false, //是否支持拖动
id:'0' //节点id
});
treePanel.setRootNode(root);
//判断是否有子结点被选中
var childHasChecked = function(node)
{
var childNodes = node.childNodes;
if(childNodes || childNodes.length>0){
for(var i=0;i<childNodes.length;i++){
if(childNodes[i].getUI().checkbox.checked)
return true;
}
}
return false;
}
//级联选中父节点
var parentCheck = function(node ,checked){
var checkbox = node.getUI().checkbox;
if(typeof checkbox == 'undefined')
return false;
if(!(checked ^ checkbox.checked))
return false;
if(!checked && childHasChecked(node))
return false;
checkbox.checked = checked;
node.attributes.checked = checked;
node.getUI().checkbox.indeterminate = checked; //半选中状态
node.getOwnerTree().fireEvent('check', node, checked);
var parentNode = node.parentNode;
if( parentNode !== null){
parentCheck(parentNode,checked);
}
}
//增加checkchange监听
treePanel.on('checkchange', function(node, checked) {
var parentNode = node.parentNode;
if(parentNode !== null) {
parentCheck(parentNode,checked);
}
node.expand();
node.attributes.checked = checked;
node.eachChild(function(child)
{
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
}, treePanel);
//获取新增复选框树的值
function onItemClick(){
var checkedNodes = treePanel.getChecked();//tree必须事先创建好.这里要标识识获取那个treepanel的 id
var checkedIds = [];
for(var i=0;i<checkedNodes.length;i++)
{
if( checkedNodes[i].hasChildNodes())
{
//这里只是获取节点为子节点的id ,如果不需要可以删除。
}
else
{
checkedIds.push(checkedNodes[i].id);
}
}
return checkedIds.join(',');
};