原文来自:奥迪男 http://blog.sina.com.cn/s/blog_502a32050100dk8u.html
private DataSetbind()//创建函数获取数据库中TreeViewTable表中的数据到数据集ds中,然后返回数据集中的数据
{
//创建连接数据库对象,并读取web.config文件中连接数据库的字符串
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["con"].ConnectionString );
//打开数据库
con.Open();
//定义查询数据库的字符串
string cmdtext = "select * from TreeViewTable";
//创建数据适配器
SqlDataAdapter sda = new SqlDataAdapter(cmdtext, con);
//创建数据集
DataSet ds = new DataSet();
//填充数据集合
sda.Fill(ds);
//返回数据机中的数据
return ds;
}
private voidchildnode(TreeNode parentNode,string seldate)
{
//调用bind()函数获取数据,并将数据保存到datatable1数据表中
DataTable datatable1 = bind().Tables[0];
//选择数据
DataRow[] rowList = datatable1.Select("parentid='"+parentNode.Value+"'");
//Response.Write(parentNode.Value);
foreach (DataRow row in rowList)
{
//创建新节点
TreeNode node = new TreeNode();
//设置节点属性
node .Text =row["nodename"].ToString ();
node.Value = row["nodeid"].ToString();
node.NavigateUrl = row["url"].ToString();
//设定是否展开数据
node.Expanded = false ;//设定节点是否展开
//添加子节点
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点(如果没有此项的话则只能显示到第二层)
//Response.Write(node.Text);
childnode(node ,seldate );
}
}
public voidbandtree(string seldate)
{
//调用bind()函数获取数据
DataTable datatable = bind().Tables[0];
//清空树的所有节点
TreeView1.Nodes.Clear();
//创建一个数据行
DataRow[] rowlist = datatable.Select("parentid='0'");
//判断其中的数据是否为空
if (rowlist.Length <= 0)
{
return;
}
//创建根节点
TreeNode rootNode = new TreeNode();
//设置根节点属性
rootNode.Text = rowlist[0]["nodename"].ToString();
rootNode .Value =rowlist [0]["nodeid"].ToString();//设置根节点的key值
rootNode.Expanded = true
;//树的根节点展开
TreeView1.Nodes.Add(rootNode );
//调用childnode()函数,创建其他子节点
childnode(rootNode, seldate );
}
protectedvoid Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bandtree("0");
}
}