现在的位置: 首页 > 综合 > 正文

掌握TreeView用法

2013年01月08日 ⁄ 综合 ⁄ 共 5668字 ⁄ 字号 评论关闭

DAL层代码:

复制代码
 1 using System.Collections.Generic;
 2 using System.Data;
 3 using DataTreeModel;
 4 using System.Data.SqlClient;
 5 using System.Windows.Forms;
 6 
 7 namespace DataTreeDAL
 8 {
 9     class TreesNodeDAL
10     {
11         //根据Parentid返回表中所有的的实体对象
12         public IEnumerable<ItemsNode> GetEveryOneByParent(int id)
13         { 
14         DataTable dt=sqlHelper.GetDatatable("select * from ItemsNode where parentId =@id",
15             new SqlParameter("id",id));
16         List<ItemsNode> list = new List<ItemsNode>();
17             foreach (DataRow row in dt.Rows)
18             {
19                 list.Add(CreateItemsNose(row));//添加对象
20             }
21             return list;
22         }
23         //更新表中的记录
24         public int UpdateRecord(ItemsNode item)
25         {
26          return sqlHelper.ExecuteNonQuery("update ItemsNode set name=@name,content=@content where id=@id", new SqlParameter("name", item.name), new SqlParameter("content", item.content),new
27              SqlParameter("id",item.Id));
28         }
29 
30         public int InsertRecord(ItemsNode item)
31         {
32             return sqlHelper.ExecuteNonQuery("Insert into ItemsNode (name,content,parentId) values(@name,@content,@parentId)", new SqlParameter("name", item.name), new SqlParameter("content", item.content), new
33             SqlParameter("parentId", item.parentId));
34         }
35 
36         public void DeleteNode(int ParentId)
37         {
38             //获得以该节点为父节点的所有子节点
39             IEnumerable<ItemsNode> childens = GetEveryOneByParent(ParentId);
40             foreach (ItemsNode child in childens)
41             {
42                 DeleteNode((int)child.Id);
43             }
44            Delete(ParentId);
45         }
46       
47         //实例化对象
48         private static ItemsNode CreateItemsNose(DataRow row)
49         {
50             ItemsNode item = new ItemsNode();
51             item.Id = row.IsNull("Id")?null:(int?)row["Id"];
52             item.name = (string)row["name"];
53             item.parentId = row.IsNull("parentId") ? null : (int?)row["parentId"];
54             item.content = (string)row["content"];
55             return item;
56         }
57         //删除操作
58         public  int Delete(int id)
59         {
60             return sqlHelper.ExecuteNonQuery("delete from ItemsNode where id=@id",
61             new SqlParameter("id", id));
62         }
63     }
64 }
复制代码

 

BLL层代码:

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using DataTreeDAL;
 5 using DataTreeModel;
 6 
 7 namespace DataTreeBLL
 8 {
 9     class TreeNodeBLL
10     {
11         //获得所有对象
12         public IEnumerable<ItemsNode> GetEveryOneByParent(int id)
13         {
14             return new TreesNodeDAL().GetEveryOneByParent(id);
15         }
16         //更新
17         public int UpdateRecord(ItemsNode item)
18         {
19             return new TreesNodeDAL().UpdateRecord( item);
20         }
21 
22         //增加
23         public int InsertRecord(ItemsNode item)
24         {
25             return new TreesNodeDAL().InsertRecord(item);
26         }
27 
28         public void DeleteAllNode(int ParentId)
29         {
30             new TreesNodeDAL().DeleteNode(ParentId);
31         }
32     }
33 }
复制代码

 

UI层代码:

复制代码
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Windows.Forms;
  4 using DataTreeBLL;
  5 using DataTreeModel;
  6 
  7 namespace DataTree
  8 {
  9     public partial class Form1 : Form
 10     {
 11         public Form1()
 12         {
 13             InitializeComponent();
 14         }
 15 
 16         private void Form1_Load(object sender, EventArgs e)
 17         {
 18             //获取所有的父节点对象
 19           IEnumerable<ItemsNode> items= new TreeNodeBLL().GetEveryOneByParent(0);
 20           
 21             foreach(ItemsNode item in items)
 22             {  
 23                 //创建一个节点实例
 24                 TreeNode Fnode = new TreeNode();
 25                 Fnode.Text = item.name;
 26                 Fnode.Tag = item;
 27                 treeView1.Nodes.Add(Fnode);
 28                 GetChildNode(Fnode,(int)item.Id); 
 29             }
 30             treeView1.ExpandAll();
 31         }
 32         //遍历子节点
 33         protected void GetChildNode(TreeNode Pnode,int id)
 34         {
 35             //获取所有以此节点最为的父节点对象
 36             IEnumerable<ItemsNode> items = new TreeNodeBLL().GetEveryOneByParent(id);
 37             foreach (ItemsNode item in items)
 38             {
 39                 TreeNode Fnode = new TreeNode();
 40                 Fnode.Text = item.name;
 41                 Fnode.Tag = item;//把节点的Tag指向对象
 42                 Pnode.Nodes.Add(Fnode);
 43                 GetChildNode(Fnode, (int)item.Id);
 44             }
 45         }
 46 
 47         private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
 48         {
 49             ItemsNode item = (ItemsNode)e.Node.Tag;
 50             tb_content.Text = item.content;
 51         }
 52 
 53         private void bt_modify_Click(object sender, EventArgs e)
 54         {
 55             ItemsNode item = (ItemsNode)treeView1.SelectedNode.Tag;
 56             Frmodify form = new Frmodify();
 57             form.FName = item.name;
 58             form.Content = item.content;
 59             if (form.ShowDialog()== DialogResult.OK)//递交修改指令
 60             {
 61                 item.name = form.FName;
 62                 item.content = form.Content;
 63                 new TreeNodeBLL().UpdateRecord(item);
 64                 treeView1.SelectedNode.Text = item.name;
 65                 tb_content.Text = item.content; 
 66             }
 67         }
 68 
 69         private void bt_Insert_1_Click(object sender, EventArgs e)
 70         {
 71             Frmodify form = new Frmodify();
 72             if (form.ShowDialog() == DialogResult.OK)
 73             {
 74                 ItemsNode item = new ItemsNode();
 75                 item.name=form.FName;
 76                 item.content=form.Content;
 77                 item.parentId = 0;//一级节点
 78                 new TreeNodeBLL().InsertRecord(item);
 79                 TreeNode Node = new TreeNode();
 80                 Node.Text=item.name;
 81                 Node.Tag=item;
 82                 treeView1.Nodes.Add(Node);
 83             }
 84         }
 85 
 86         private void bt_Insert2_Click(object sender, EventArgs e)
 87         {
 88             TreeNode CurrentNode = treeView1.SelectedNode;
 89             Frmodify form = new Frmodify();
 90             if (form.ShowDialog() == DialogResult.OK)
 91             {
 92                 ItemsNode item = (ItemsNode)CurrentNode.Tag;
 93                 item.name = form.FName;
 94                 item.content = form.Content;
 95                 item.parentId=item.Id;
 96                 new TreeNodeBLL().InsertRecord(item);
 97                 //显示到界面
 98                 TreeNode Node = new TreeNode();
 99                 Node.Text = item.name;
100                 Node.Tag = item;
101                 CurrentNode.Nodes.Add(Node);
102             }
103         }
104 
105         private void bt_Delete_Click(object sender, EventArgs e)
106         {
107             TreeNode Node = treeView1.SelectedNode;
108             Node.Remove();
109             ItemsNode item = (ItemsNode)Node.Tag;
110             new TreeNodeBLL().DeleteAllNode((int)item.Id);
111         }
112     }
113 }
复制代码

 

SQLhelper 类

复制代码
 1 using System.Data;
 2 using System.Data.SqlClient;
 3 using System.Configuration;
 4 
 5 namespace DataTreeDAL
 6 {
 7     class sqlHelper
 8     {
 9         protected static readonly string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
10         //返回一个结果集
11         public static DataTable GetDatatable(string sql,params SqlParameter[] Paramers)
12         {
13             using (SqlConnection con = new SqlConnection(conStr))//创建一个连接
14             {
15                 con.Open();//打开连接通道
16                 using (SqlCommand cmd =con.CreateCommand())//创建一个命令对象
17                 {
18                     cmd.CommandText = sql;
19                     cmd.Parameters.AddRange(Paramers);
20                     SqlDataAdapter da = new SqlDataAdapter(cmd);
21                     DataTable dt = new DataTable();
22                     da.Fill(dt);
23                     return dt;
24                 }
25             }
26         }
27        
28         public static int ExecuteNonQuery(string sql, params SqlParameter[] Paramers)
29         {
30             using (SqlConnection con = new SqlConnection(conStr))//创建一个连接
31             {
32                 con.Open();//打开连接通道
33                 using (SqlCommand cmd = con.CreateCommand())//创建一个命令对象
34                 {
35                     cmd.CommandText = sql;
36                     cmd.Parameters.AddRange(Paramers);
37                     return cmd.ExecuteNonQuery();
38                 }
39             }
40         }
41     }
42 }

抱歉!评论已关闭.