<ext:Button ID="btnNew" runat="server" Icon=Add Text="Refresh">
<Listeners>
<Click Handler=";Search(#{TreePanel1}); />
</Listeners>
</ext:Button>
public Ext.Net.TreeNodeCollection TreeFunction()
{
try
{
BLLEvent Menu = new BLLEvent();
DataTable dt = Menu.Dt_ClientArea();
TreePanel1.Root.Clear();
Ext.Net.TreeNode Root = new Ext.Net.TreeNode("TreeRoot");
TreePanel1.Root.Add(Root);
TreePanel1.RootVisible = false;
TreePanel1.Border = false;
DataRow[] menus = dt.Select("", "");
foreach (DataRow SubTree in menus)
{
Ext.Net.TreeNode SubNode = new Ext.Net.TreeNode();
SubNode.Text = SubTree["AreaName"].ToString();
SubNode.NodeID = SubTree["AreaID"].ToString();
SubNode.Icon = (Icon)Enum.Parse(typeof(Icon), "World");
Root.Nodes.Add(SubNode);
DataTable dtSystem = Menu.Dt_ClientDeptByAreaID(Int32.Parse(SubTree["AreaID"].ToString()));
DataRow[] submenus = dtSystem.Select("", "");
SubNode.Listeners.Click.Handler = "Ext.net.DirectMethods.TreeClick('" + SubNode.NodeID + "')";
foreach (DataRow Leaf in submenus)
{
Ext.Net.TreeNode LeafNode = new Ext.Net.TreeNode();
LeafNode.Text = Leaf["SysDept"].ToString();
LeafNode.NodeID = SubTree["AreaID"].ToString() + "," + Leaf["DeptID"].ToString(); // 叶节点ID以 AreaID + DeptID 组成,方便点击调用取值
LeafNode.Icon = (Icon)Enum.Parse(typeof(Icon), "Server");
SubNode.Nodes.Add(LeafNode);
LeafNode.Listeners.Click.Handler = "Ext.net.DirectMethods.TreeClick('" + LeafNode.NodeID + "');#{wdDeptAdd}.hide();#{wdDeptNew}.hide();#{wdEngineer}.hide();#{FpDeptNew}.reset();#{FpDeptNew}.reset();";
}
}
}
catch (Exception ex)
{
X.Msg.Alert(Resources.Global.SystemAlert, ex.ToString()).Show();
}
return TreePanel1.Root;
}
[DirectMethod]
public string Query()
{
Ext.Net.TreeNodeCollection nodes = this.TreeFunction();
return nodes.ToJson();
}
<script type="text/javascript">
function Search(tree) {
Ext.net.DirectMethods.Query({
success : function (result) {
var nodes = eval(result);
if(nodes.length > 0){
tree.initChildren(nodes);
}
else{
tree.getRootNode().removeChildren();
}
}
});
}
</script>