这里所有的代码都是写在母版页中的: 从数据库中动态读取数据形成TreeView方法: private void InsertTreeView(TreeView treeview, string url, string name) { //菜单树节点清空 treeview.Nodes.Clear(); //根节点设置 TreeNode node = new TreeNode(name, name); node.ImageUrl = url; //根节点添加 treeview.Nodes.Add(node); //需要插入的子节点查询 Maticsoft.BLL.T_MSGSYS_TYPE typebll = new Maticsoft.BLL.T_MSGSYS_TYPE(); List<Maticsoft.Model.T_MSGSYS_TYPE> typelist = new List<Maticsoft.Model.T_MSGSYS_TYPE>(); Maticsoft.BLL.T_MSGSYS_SITE sitebll = new Maticsoft.BLL.T_MSGSYS_SITE(); typelist = typebll.GetModelList(" ENABLE =1 "); //遍历所有需要插入 for (int i = 0; i <= typelist.Count - 1; i++) { //设置子节点 TreeNode node1 = new TreeNode(typelist[i].NAME, typelist[i].NAME); node1.NavigateUrl = "" ; //想根节点后添加子节点 treeview.Nodes[0].ChildNodes.Add(node1); //查询子节点的子节点 List<Maticsoft.Model.T_MSGSYS_SITE> sitelist = new List<Maticsoft.Model.T_MSGSYS_SITE>(); sitelist = sitebll.GetModelList(" TYPE_ID='" + typelist[i].PK_TYPE_ID + "'"); for (int j = 0; j <= sitelist.Count - 1; j++) { //子子节点的设置 TreeNode node2 = new TreeNode(sitelist[j].TITLE, sitelist[j].TITLE); node2.NavigateUrl = "" ; //子子节点的添加 node1.ChildNodes.Add(node2); } } } Page_Load 中的调用: InsertTreeView(TreeView1, "/images/bt22.gif", "短信模板"); 对于页面跳转后节点展开的设置: /// <summary> /// 节点展开时设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { //获取当前节点 TreeNode currentNode = e.Node; //验证当前Session中是否有节点 if (Session["treeNode1"] != null) { TreeNode node = Session["treeNode1"] as TreeNode; //遍历TreeView的Nodes集合 foreach (TreeNode tn in this.TreeView1.Nodes) { //若循环节点的文本与当前节点的文本不匹配,将其余节点折叠 if (!tn.Text.Trim().Equals("短信模板")) { if (tn.Text.Trim() != currentNode.Text.Trim()) { tn.Collapse(); } } } } //存储当前节点 Session["treeNode1"] = currentNode; } /// <summary> /// 收缩时设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void TreeView1_TreeNodeCollapsed(object sender, TreeNodeEventArgs e) { //移除存储的节点 Session.Remove("treeNode1"); } /// <summary> /// 加载时显示展开 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void TreeView1_Load(object sender, EventArgs e) { if (Session["treeNode1"] != null) { TreeNode parentNode = Session["treeNode1"] as TreeNode; //遍历TreeView的Nodes集合 foreach (TreeNode tn in this.TreeView1.Nodes[0].ChildNodes) { //若循环节点的文本与当前节点的文本匹配,展开该节点;反之折叠 if (!tn.Text.Trim().Equals("短信模板")) { if (tn.Text.Trim() == parentNode.Text.Trim()) { tn.Expand(); } else { tn.Collapse(); } } } } }