tree.cs

来自「《精通ASP.NET2.0网络应用系统开发》书中的源码」· CS 代码 · 共 206 行

CS
206
字号
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for Tree
/// </summary>
namespace WebDBManage
{
	public class TreeProperty
	{
		public String TreeID;
		public String TableName;
		public String OrderBy;
	}

	public class Tree
	{
		/// 定义查询数据库的SQL语句
		public static readonly string GETTREEMAXID = "SELECT TableTreeID FROM TableTree ORDER BY TableTreeID DESC";
		public static readonly string GETTREES     = "SELECT * From TableTree";
		public static readonly string MENUNODETEXT = "MENUNODETEXT";

		/// <summary>
		/// 创建树
		/// </summary>
		public void InitTree(TreeView tree,DataSet ds,bool expand)
		{
			tree.Nodes.Clear();
			if (null == ds) return;
			if (ds.Tables.Count <= 0) return;

			DataRow[] rowList = ds.Tables[0].Select(TableTree.FATHERID + "='-1'",TableTree.ORDERBY);
			foreach (DataRow row in rowList)
			{
				TreeNode node = new TreeNode();
				node.Text = row[TableTree.DESN].ToString();
				node.NavigateUrl = "MainManage.aspx?TableName=" + row[TableTree.TABLENAME].ToString()
				    + "&TreeID=" + row[TableTree.TABLETREEID].ToString();
				node.Target = "Main";
				node.Value = row[TableTree.TABLETREEID].ToString() + "|" + row[TableTree.TABLENAME].ToString();
				tree.Nodes.Add(node);

				CreateSubTree(node,ds,expand);
			}
		}

		/// <summary>
		/// 创建树的子结点
		/// </summary>
		public void CreateSubTree(TreeNode parentNode,DataSet ds,bool expand)
		{
			string value = parentNode.Value.Substring(0,parentNode.Value.IndexOf("|"));
			DataRow[] rowList = ds.Tables[0].Select(TableTree.FATHERID + "='" + value + "'",TableTree.ORDERBY);
			foreach (DataRow row in rowList)
			{
				TreeNode node = new TreeNode();
				node.Text = row[TableTree.DESN].ToString();
				node.NavigateUrl = "MainManage.aspx?TableName=" + row[TableTree.TABLENAME].ToString()
					+ "&TreeID=" + row[TableTree.TABLETREEID].ToString();
				node.Target = "Main";
				node.Value = row[TableTree.TABLETREEID].ToString() + "|" + row[TableTree.TABLENAME].ToString();
				parentNode.ChildNodes.Add(node);

				CreateSubTree(node,ds,expand);
			}
		}

		/// <summary>
		/// 创建树
		/// </summary>
		public void InitTree(TreeView tree,DataSet ds,int treeID,bool selected)
		{
			tree.Nodes.Clear();
			if (null == ds) return;
			if (ds.Tables.Count <= 0) return;

			DataRow[] rowList = ds.Tables[0].Select(TableTree.FATHERID + "='-1'",TableTree.ORDERBY);
			foreach (DataRow row in rowList)
			{
				TreeNode node = new TreeNode();
				node.Text = row[TableTree.DESN].ToString();
				node.Value = row[TableTree.TABLETREEID].ToString() + "|" + row[TableTree.TABLENAME].ToString();
				tree.Nodes.Add(node);

				if (node.Value.Substring(0,node.Value.IndexOf("|")) == treeID.ToString())
				{
					node.Select();
					if (node.Parent != null)
					{
						node.Parent.Expand();
					}
				}

				CreateSubTree(node,ds,treeID,selected);
			}
		}

		/// <summary>
		/// 创建树的子结点
		/// </summary>
		public void CreateSubTree(TreeNode parentNode,DataSet ds,int treeID,bool selected)
		{
			string value = parentNode.Value.Substring(0,parentNode.Value.IndexOf("|"));
			DataRow[] rowList = ds.Tables[0].Select(TableTree.FATHERID + "='" + value + "'",TableTree.ORDERBY);
			foreach (DataRow row in rowList)
			{
				TreeNode node = new TreeNode();
				node.Text = row[TableTree.DESN].ToString();
				node.Value = row[TableTree.TABLETREEID].ToString() + "|" + row[TableTree.TABLENAME].ToString();
				parentNode.ChildNodes.Add(node);

				///扩展父节点
				if (node.Value.Substring(0,node.Value.IndexOf("|")) == treeID.ToString())
				{
					node.Select();
					parentNode.Expand();
				}

				CreateSubTree(node,ds,treeID,selected);
			}
		}

		/// <summary>
		/// 获取节点的前一个同辈兄弟节点
		/// </summary>
		/// <param name="node"></param>
		/// <returns></returns>
		public static TreeNode PrevNode(TreeNode node)
		{			
			if(node.Parent == null)
			{
				return((TreeNode)null);
			}

			int index = node.Parent.ChildNodes.IndexOf(node);
			if (index <= 0) return ((TreeNode)null);

			return (node.Parent.ChildNodes[index - 1]);
		}

		/// <summary>
		/// 获取节点的后一个同辈兄弟节点
		/// </summary>
		/// <param name="node"></param>
		/// <returns></returns>
		public static TreeNode NextNode(TreeNode node)
		{
			if (node.Parent == null)
			{
				return ((TreeNode)null);
			}

			int index = node.Parent.ChildNodes.IndexOf(node);
			if (index <= -1) return ((TreeNode)null);
			if (index >= node.Parent.ChildNodes.Count -1) return ((TreeNode)null);

			return (node.Parent.ChildNodes[index + 1]);
		}		

		/// <summary>
		/// 判定某个节点的是否存在相同名称的兄弟节点
		/// </summary>
		public static bool IsExistNode(TreeNode currentNode,String nodeName)
		{
			if (currentNode.Parent == null)
			{
				return (false);
			}

			foreach (TreeNode node in currentNode.Parent.ChildNodes)
			{
				if (node != currentNode)
				{
					if (node.Text.Trim().ToUpper() == nodeName.Trim().ToUpper())
					{
						return (true);
					}
				}
			}
			return (false);
		}

		/// <summary>
		/// 在树中判断某个结点是否存在某个特定的子结点
		/// </summary>
		public bool IsExistSubNode(TreeNode parentNode,String nodeName)
		{
			foreach (TreeNode node in parentNode.ChildNodes)
			{
				if (node.Text.Trim().ToUpper() == nodeName.Trim().ToUpper())
				{
					return (true);
				}
			}
			return (false);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?