前台:
<asp:TreeView ID="TreeView1" runat="server" ImageSet="Msdn" NodeIndent="10" ShowLines="True" ExpandDepth="0"> <ParentNodeStyle Font-Bold="False" /> <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="1px" VerticalPadding="2px" /> <SelectedNodeStyle BackColor="#4a5bb1" ForeColor="white" /> </asp:TreeView>
后台:
//已经定义好的数据 protected DataSet ds = new DataSet(); CreateTree(this.TreeView1.Nodes,""); //用递归的方法显示树形目录 private void CreateTree(TreeNodeCollection TNCs, string strParentId) { TreeNode tmpTNCs = new TreeNode(); DataView dv = new DataView(); dv.Table = ds.Tables[0]; string strID; if (strParentId == "") { dv.RowFilter = "isnull(ParentFunctionID,0)=0"; } else { dv.RowFilter = "ParentFunctionID = " + strParentId; } foreach (DataRowView drv in dv) { tmpTNCs = new TreeNode(); //定义结点 strID = drv["subID"].ToString(); tmpTNCs.Value = strID; //定义结点ID tmpTNCs.Text = drv["subName"].ToString(); //定义结点文字 //tmpTNCs.ImageUrl = "img/folderclose.gif"; //定义图片 //tmpTNCs.ExpandedImageUrl = "img/folderopen.gif"; //定义打开的图片 tmpTNCs.NavigateUrl = drv["Url"].ToString(); //定义结点联接 tmpTNCs.Target = "main"; if (tmpTNCs.NavigateUrl == "right.aspx") tmpTNCs.SelectAction = TreeNodeSelectAction.None; //选择不触发事件 TNCs.Add(tmpTNCs); //添加结点 CreateTree(TNCs[TNCs.Count - 1].ChildNodes, strID); //递归调用 //选定某个结点 if (Request.Params["subID"] != null) { if (strID == Request.Params["subID"].ToString()) { //将选定结点的所有上级结点的Expanded属性全设为true,即展开结点 string strNodeIndex = TNCs[TNCs.Count - 1].Value; string[] strExpandLevel = strNodeIndex.Split('.'); TreeNode TN = this.TreeView1.Nodes[int.Parse(strExpandLevel[0])]; TN.Expanded = true; for (int i = 1; i < strExpandLevel.Length; i++) { int ii = int.Parse(strExpandLevel[i]); TN = TN.ChildNodes[ii]; TN.Expanded = true; } //选定结点 this.TreeView1.SelectedNode.Value = strNodeIndex; } } } }