【原创】SQL数据库数据绑定到TreeView菜单目录的类方法实现

最近在网上收集了很多TreeView控件从数据库中读取数据的实例,但是发觉都是到处Copy的帖子,很多代码都已经过时,或漏洞百出,编写质量也不高,所以昨晚自己折腾了两个小时完成了这个菜单目录数据绑定的类,希望对大家有用,节省点时间,也希望大家以后有什么好的代码,都能拿出来共享学习。本人能力有限,有错的地方希望指点一二!如果觉得这篇文章对你有帮助,希望支持一下,也好满足我的虚荣心,^_^!

代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Linq;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.HtmlControls;
 9using System.Web.UI.WebControls;
10using System.Web.UI.WebControls.WebParts;
11using System.Xml.Linq;
12using System.Data.SqlClient;
13
14ExpandedBlockStart.gifContractedBlock.gif/**//// <summary>
15/// 名称:菜单目录树类
16/// 功能:实现从Sql数据库中读取菜单数据并绑定到TreeView控件
17/// 作者:陈智敏
18/// 完成日期:2008/10/27
19/// </summary>

20
21public class MenuTree
22ExpandedBlockStart.gifContractedBlock.gif{
23    public string SqlConnectionString; //获取数据库连接字符串
24    private SqlConnection cn;           //创建SQL连接
25    private SqlDataAdapter sda;           //创建SQL数据适配器
26    private DataSet ds;                   //创建数据集
27    private TreeView tv;                //创建树视图
28    private DataView dv;               //创建视图  
29
30ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
31    /// 返回DataSet数据集
32    /// </summary>
33    /// <param name="strSql">SQL语句</param>

34    public void GetDataSet(string strSql)
35ExpandedSubBlockStart.gifContractedSubBlock.gif    {
36ContractedSubBlock.gifExpandedSubBlockStart.gif        #region
37        cn = new SqlConnection(SqlConnectionString);
38        cn.Open();
39        string str = "select * from ";
40        str += strSql;
41        sda = new SqlDataAdapter(str, cn);
42        ds = new DataSet();
43        sda.Fill(ds);
44        if (cn != null)
45ExpandedSubBlockStart.gifContractedSubBlock.gif        {
46            cn.Close();
47            cn.Dispose();
48        }

49        #endregion

50    }

51
52ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
53    ///递归添加树的节点
54    /// </summary>
55    /// <param name="dst">绑定到菜单的数据集</param>

56    public void BindTV(TreeView TreeView1)
57ExpandedSubBlockStart.gifContractedSubBlock.gif    {
58        tv = TreeView1;
59        AddTree(0, (TreeNode)null);
60    }

61    void AddTree(int ParentID, TreeNode pNode)
62ExpandedSubBlockStart.gifContractedSubBlock.gif    {
63        dv = new DataView(ds.Tables[0]);
64        //过滤ParentID,得到当前的所有子节点
65        dv.RowFilter = "[PARENTID] = " + ParentID;
66
67        foreach (DataRowView Row in dv)
68ExpandedSubBlockStart.gifContractedSubBlock.gif        {
69            TreeNode Node = new TreeNode();
70            if (pNode == null)
71ExpandedSubBlockStart.gifContractedSubBlock.gif            {    //添加根节点
72                Node.Text = Row["ConText"].ToString();
73                tv.Nodes.Add(Node);
74                Node.Expanded = true;
75                AddTree(Int32.Parse(Row["ID"].ToString()),Node);    //再次递归
76            }

77            else
78ExpandedSubBlockStart.gifContractedSubBlock.gif            {   //̀添加当前节点的子节点
79                Node.Text = Row["ConText"].ToString();
80                //pNode.Nodes.Add(Node);
81                pNode.ChildNodes.Add(Node);
82                Node.Expanded = true;
83                AddTree(Int32.Parse(Row["ID"].ToString()),Node);     //再次递归
84            }

85        }

86    }

87}

88
89

 

对了忘记说明

ID为结点编码

ConText为结点内容

ParentID为父节点编码

 

转载于:https://www.cnblogs.com/Jackey_Chen/archive/2008/10/28/1321200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值