您的位置:首页 > 数据库

转发 C#从数据库动态邦定TreeView控件

2008-05-19 18:02 363 查看
[align=left]1:建立数据库[/align]
[align=left] [/align]
[align=left]在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:[/align]
[align=left]列名 数据类型 描述 长度 主键[/align]
[align=left]ID Int 节点编号 4 是[/align]
[align=left]ParentID Int 父节点编号 4 [/align]
[align=left]ConText Nvarchar 我们要显示的节点内容 50 [/align]
[align=left] [/align]
[align=left]在SQL SERVER 2000中建表的脚本:[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]CREATE TABLE [dbo].[tbTree] ([/align]
[align=left] [ID] [int] NOT NULL ,[/align]
[align=left] [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[/align]
[align=left] [ParentID] [int] NULL [/align]
[align=left]) ON [PRIMARY][/align]
[align=left] [/align]
[align=left]在表中添加如下记录:[/align]
[align=left] [/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 2,'北京',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 3,'天津',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)[/align]
[align=left]**********************************************************************[/align]
[align=left] 2.添加一个新页面,放置一个TreeView控件[/align]
[align=left]3.页面代码如下:主要是用到了递归算法[/align]
[align=left]DataSet ds = new DataSet();[/align]
[align=left] [/align]
[align=left] private void Page_Load(object sender, System.EventArgs e)[/align]
[align=left] {[/align]
[align=left] if (!IsPostBack)[/align]
[align=left] {[/align]
[align=left] // 在此处放置用户代码以初始化页面[/align]
[align=left] SqlConnection CN = new SqlConnection();[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] //初始化连接字符串[/align]
[align=left] CN.ConnectionString = "Data Source=A21D1656E2B7442//SQL2000;Initial Catalog=xiazai;Integrated Security=True";[/align]
[align=left] CN.Open();[/align]
[align=left] //添加命令,从数据库中得到数据[/align]
[align=left] SqlCommand sqlCmd = new SqlCommand();[/align]
[align=left] sqlCmd.Connection = CN;[/align]
[align=left] sqlCmd.CommandText = "select * from tbTree";[/align]
[align=left] sqlCmd.CommandType = CommandType.Text;[/align]
[align=left] SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);[/align]
[align=left] adp.Fill(ds);[/align]
[align=left] }[/align]
[align=left] catch (Exception ex)[/align]
[align=left] {[/align]
[align=left] throw (ex);[/align]
[align=left] }[/align]
[align=left] finally[/align]
[align=left] {[/align]
[align=left] CN.Close();[/align]
[align=left] }[/align]
[align=left] //调用递归函数,完成树形结构的生成[/align]
[align=left] //tn2=AddTree(0, (TreeNode)null);[/align]
[align=left] //TreeView1.Nodes.Add(tn2);[/align]
[align=left] AddTree(0, (TreeNode)null);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] public void AddTree(int ParentID, TreeNode pNode)[/align]
[align=left] {[/align]
[align=left] TreeNode tn1 = new TreeNode();[/align]
[align=left] DataView dvTree = new DataView(ds.Tables[0]);[/align]
[align=left] //过滤ParentID,得到当前的所有子节点[/align]
[align=left] dvTree.RowFilter = "[PARENTID] = " + ParentID;[/align]
[align=left] foreach (DataRowView Row in dvTree)[/align]
[align=left] {[/align]
[align=left] if (pNode == null)[/align]
[align=left] { //'?添加根节点[/align]
[align=left] [/align]
[align=left] tn1.Text = Row["ConText"].ToString();[/align]
[align=left] TreeView1.Nodes.Add(tn1);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn1); //再次递归[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] { //添加当前节点的子节点[/align]
[align=left] TreeNode tn2 = new TreeNode();[/align]
[align=left] tn2.Text = Row["ConText"].ToString();[/align]
[align=left] //pNode.Nodes.Add(tn2);[/align]
[align=left] pNode.ChildNodes.Add(tn2);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn2); //再次递归[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: