public class CheckTreeWrite { private static DaoFactory dao = HibernateDaoFactory.getDaoFactory(); static String scripthead = " "; static String scriptend = " "; static String scriptbody = ""; public static void clear() { scripthead = " "; scriptend = " function changeAllChild(parent){for(var i=0;i<parent.childNodes.length;i++){ parent.childNodes[i].getUI().onRender(); parent.childNodes[i].getUI().toggleCheck (parent.getUI().isChecked ()); changeAllChild(parent.childNodes[i]) } };"; scriptend += " function changeAllParent(child){if(child==root){return;}; if(child.getUI().checkbox.checked==true){ child.parentNode .getUI().checkbox.checked=true;} changeAllParent(child.parentNode) ; };"; scriptend += " function removeAllcheckchange(parent){for(var i=0;i<parent.childNodes.length;i++){ parent.removeListener(/"checkchange/",changebottom ); removeAllcheckchange(parent.childNodes[i]) } };"; scriptend += " function addAllcheckchange(parent){for(var i=0;i<parent.childNodes.length;i++){ parent.addListener(/"checkchange/",changebottom ); addAllcheckchange(parent.childNodes[i]) } };"; scriptbody = ""; } public static String getCheckBoxTree(List<TreeItem> list, String rootname, String url) { clear(); if (rootname == null || rootname.equals("")) { rootname = "root"; }
if (url == null || url.equals("")) { url = "javascript:void(0)"; } scriptbody += "var root=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(root) } },checked:false,id:/"root/",text:/"" + " "+rootname + " /",href:'" + url + "',hrefTarget:'rightFrame',expanded:true});/n";
TreeItem it; HashMap deptidMap=new HashMap(); for (int i = 0; i < list.size(); i++) { it = (TreeItem) list.get(i); deptidMap.put(it.getItemId(), it);//放入hashMap,用于子结点引用 if (it.getItemLev() == 1) { AddTreeItem(it,false);//根结点
} else { AddTreeItem(it,(TreeItem)deptidMap.get(it.getItemRef()),false);
}
}
return scripthead + scriptbody + scriptend; } public static TreeItem AddTreeItem(TreeItem po, boolean tar) { scriptbody += "var obj" + po.getItemId() + "=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(obj" + po.getItemId()+") } },checked:false,id:/"" + po.getItemId() + "/",text:/" "+po.getItemName() + " /",href:/"" + po.getUrl(); if (tar) scriptbody += "/",hrefTarget:'rightFrame'});/n"; else scriptbody += "/"});/n"; scriptbody += "root.appendChild(obj" + po.getItemId() + ");/n"; //自身有子结点列表 if(po.getTreeItems()!=null&&po.getTreeItems().size()>0) { for(int i=0;i<po.getTreeItems().size();i++) { AddTreeItem((TreeItem)po.getTreeItems().get(i),po, false); } } return po; } public static TreeItem AddTreeItem(TreeItem po, TreeItem parent, boolean tar) { scriptbody += "var obj" + po.getItemId() + "=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(obj" + po.getItemId()+") } },checked:false,id:/"" + po.getItemId() + "/",text:/""+po.getItemName() + "/",href:/"" + po.getUrl(); if (tar) scriptbody += "/",hrefTarget:'rightFrame'});/n"; else scriptbody += "/"});/n"; scriptbody += "obj" + parent.getItemId() + ".appendChild(obj" + po.getItemId() + ");/n"; //自身有子结点列表 if(po.getTreeItems()!=null&&po.getTreeItems().size()>0) { for(int i=0;i<po.getTreeItems().size();i++) { AddTreeItem((TreeItem)po.getTreeItems().get(i),po, false); } } return po; }
}--------------------------
Ext.onReady(function(){
var root=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(root) } },checked:false,id:"root",text:" 模块列表 ",href:'/sys/sysnodeAction.action',hrefTarget:'rightFrame',expanded:true});var obj01=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(obj01) } },checked:false,id:"01",text:" 系统管理 ",href:"javascript:void(0)"});root.appendChild(obj01);var obj02=new Ext.tree.TreeNode({listeners:{ 'checkchange':function changebottom() { changeAllChild(obj02) } },checked:false,id:"02",text:" 基础资料 ",href:"javascript:void(0)"});root.appendChild(obj02); tree=new Ext.tree.TreePanel({ waitTitle : '请稍候', waitMsg : '正在加载......',renderTo:document.body,root:root,width:document.body.scrollWidth,height:window.screen.availHeight });
tree.doLayout( ); //接下来,初始化设置 var frameobj=opener.parent.rightFrame; var selectRows = frameobj.grid.getSelectionModel().getSelections(); var roleid=selectRows[0].get('roleid'); var olddata=getSysRoleLimitsList(roleid);//数据库得到的数据 olddata=eval("["+olddata+"]"); changeAllChild(root);//这样,所在结点都会被加载 removeAllcheckchange(root); for(var j=0;j<olddata.length;j++) { var lastobj=eval("obj"+olddata[j][0]+"$"+olddata[j][1]); var check; if(olddata[j][2]=='0') { check=false; } else { check=true; } //lastobj.getUI().toggleCheck(check); lastobj.getUI().checkbox.checked=check; changeAllParent(lastobj); } addAllcheckchange(root);
});