【原创】SQL数据库数据绑定到TreeView菜单目录的类方法实现
最近在网上收集了很多TreeView控件从数据库中读取数据的实例,但是发觉都是到处Copy的帖子,很多代码都已经过时,或漏洞百出,编写质量也不高,所以昨晚自己折腾了两个小时完成了这个菜单目录数据绑定的类,希望对大家有用,节省点时间,也希望大家以后有什么好的代码,都能拿出来共享学习。本人能力有限,有错的地方希望指点一二!如果觉得这篇文章对你有帮助,希望支持一下,也好满足我的虚荣心,^_^!
最近在网上收集了很多TreeView控件从数据库中读取数据的实例,但是发觉都是到处Copy的帖子,很多代码都已经过时,或漏洞百出,编写质量也不高,所以昨晚自己折腾了两个小时完成了这个菜单目录数据绑定的类,希望对大家有用,节省点时间,也希望大家以后有什么好的代码,都能拿出来共享学习。本人能力有限,有错的地方希望指点一二!如果觉得这篇文章对你有帮助,希望支持一下,也好满足我的虚荣心,^_^!
代码如下:
1
using System;2
using System.Data;3
using System.Configuration;4
using System.Linq;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.HtmlControls;9
using System.Web.UI.WebControls;10
using System.Web.UI.WebControls.WebParts;11
using System.Xml.Linq;12
using System.Data.SqlClient;13

14

/**//// <summary>15
/// 名称:菜单目录树类16
/// 功能:实现从Sql数据库中读取菜单数据并绑定到TreeView控件17
/// 作者:陈智敏18
/// 完成日期:2008/10/2719
/// </summary>20

21
public class MenuTree22


{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

30

/**//// <summary>31
/// 返回DataSet数据集32
/// </summary>33
/// <param name="strSql">SQL语句</param>34
public void GetDataSet(string strSql)35

{36

#region37
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)45

{46
cn.Close();47
cn.Dispose();48
}49
#endregion50
}51

52

/**//// <summary>53
///递归添加树的节点54
/// </summary>55
/// <param name="dst">绑定到菜单的数据集</param>56
public void BindTV(TreeView TreeView1)57

{58
tv = TreeView1;59
AddTree(0, (TreeNode)null);60
}61
void AddTree(int ParentID, TreeNode pNode)62

{63
dv = new DataView(ds.Tables[0]);64
//过滤ParentID,得到当前的所有子节点65
dv.RowFilter = "[PARENTID] = " + ParentID;66

67
foreach (DataRowView Row in dv)68

{69
TreeNode Node = new TreeNode();70
if (pNode == null)71

{ //添加根节点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
else78

{ //̀添加当前节点的子节点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为父节点编码
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
浙公网安备 33010602011771号