var trNode; var Tree = Ext.tree; var loader = new Tree.TreeLoader({ dataUrl: '../../system/address_list/Default.aspx', listeners: { "beforeload": function(treeLoader, node) { treeLoader.baseParams.id = (node.id != "0" ? node.id : ""); } } }); var tree = new Tree.TreePanel({ // el: 'tree-div', useArrows: true, autoScroll: true, animate: true, // enableDD: true, containerScroll: true, // dropConfig: {appendOnly:true}, loader: loader, listeners: { "click": function(node) { trNode = node; // Ext.get("nodeid").dom.value = node.id; // alert(Ext.get("nodeid").dom.value); }, "checkchange": function(node, state) { if (node.hasChildNodes()) { for (i = 0; i < node.childNodes.length; i++) { node.childNodes[i].getUI().checkbox.checked = state; } } } } }); var root = new Tree.AsyncTreeNode({ text: '我的通讯录', draggable: false, id: '0' }); tree.setRootNode(root); // tree.render(); root.expand(); win = new Ext.Window({ title: '通讯录', iconCls: 'address_list', applyTo: 'txl-win', layout: 'fit', width: 300, height: 400, closeAction: 'hide', plain: true, modal: 'true', items: [tree], buttons: [{ text: '获取选中值', handler: function() { //var nodes = tree.getChecked(); // alert(nodes); var nodes = tree.getRootNode().childNodes; for (var j = 0; j < nodes.length; j++) { var node = tree.getRootNode().childNodes[j]; if (node.hasChildNodes()) { for (var i = 0; i < node.childNodes.length; i++) { if (node.childNodes[i].getUI().checkbox.checked) { alert(node.childNodes[i].id); } } } } } }] }); } win.show(this); }); }); 获取数据方法: shuju.aspx.cs [c-sharp] view plaincopy protected void Page_Load(object sender, EventArgs e) { string node = Request["node"]; string json = ""; if ("0".Equals(node)) { DataTable dt = 获取的数据集 json += "["; for (int i = 0; i < dt.Rows.Count; i++) { json += "{id:'" + dt.Rows[i]["id"].ToString() + "',text:'" + dt.Rows[i]["name"].ToString() + "',leaf:" + (!bool.Parse(dt.Rows[i]["cc"].ToString())).ToString().ToLower() + ",checked:true},"; } json = json.TrimEnd(new char[] { ',' }); json += "]"; } else { DataTable dt = 获取的数据集 //json += "[{id:'554c49b6-bf2e-451d-ab10-64a4d1960d66',text:'节点11',leaf:false},{id:2,text:'节点12',leaf:true}]"; json += "["; for (int i = 0; i < dt.Rows.Count; i++) { json += "{id:'" + dt.Rows[i]["name"].ToString() + "',leaf:" + (!bool.Parse(dt.Rows[i]["cc"].ToString())).ToString().ToLower() + ",checked:true},"; } json = json.TrimEnd(new char[] { ',' }); json += "]"; } Response.Write(json); } 补充说明: 经过测试:var nodes = tree.getChecked();只能获取点击操作复选的值。用js 点击父级同时勾选子级节点这个方法无效。 第二种方法:递归显示tree选中节点 点击显示方法中: function onclick() { var nodes = tree.getRootNode().childNodes; if (nodes.length>0) get_allnode(tree.getRootNode().childNodes[0], true); } get_allnode = function(node, flag) { if (node.hasChildNodes()) { node.eachChild(function(child) { //child.ui.toggleCheck(flag); if(child.attributes.checked) alert(child.attributes.id); get_allnode(child, flag); //递归调用 }); } } 解决方法: 获取tree对象循环判断是否选中 [javascript] view plaincopy var nodes = tree.getRootNode().childNodes; for (var j = 0; j < nodes.length; j++) { var node = tree.getRootNode().childNodes[j]; if (node.hasChildNodes()) { for (var i = 0; i < node.childNodes.length; i++) { if (node.childNodes[i].getUI().checkbox.checked) { alert(node.childNodes[i].id); } } } }
?