昨天花了一下午时间终于弄出来两棵树,对应数据库中的两张数型结构表。鉴于时间关系,仅把主要后台代码贴出来供大家参考。
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
this.AddNodes(GetData().Tables[0],null,"0");
}
}
//dt,存放节点的表
//TreeNode数型结构,初见树是为null
//id ,假设数据库表中根节点的父节点为0
private void AddNodes(DataTable dt,TreeNode node,string id)
{
DataRow[] rows = dt.Select("ParentID='"+id+"'"); //筛选出属于父节点 “node”的子节点集合
foreach(DataRow dr in rows) //循环子节点集合
{
TreeNode nd = new TreeNode();
//nd.NavigateUrl=dr["URL"].ToString(); //设置浏览的网址
nd.NodeData=dr["NodeID"].ToString(); //存放节点 ID
nd.Text=dr["positiondesc"].ToString(); //设置节点名称
this.AddNodes(dt,nd,nd.NodeData); //递归,添加该节点的子节点
if(node==null || id=="0")
{
this.TreeView1.Nodes.Add(nd); //添加至根节点
}
else
{
node.Nodes.Add(nd); //添加子节点
}
}
}
public DataSet GetData()
{
SqlConnection conn = new SqlConnection();
//初始化连接字符串 数据库test中建有树型表position ,存储工程HR_GetAllPosition取出所有节点
conn.ConnectionString= "server=localhost;database=test;uid=sa;pwd=";
conn.Open();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "HR_GetAllPositon";
SqlDataAdapter adp = new SqlDataAdapter(comm);
DataSet ds=new DataSet();
adp.Fill(ds);
this.ViewState["ds"]=ds;
return ds;
}
至于TreeView 的安装配置和基本用法,我这里还有一篇文章讲到,请自己查找^_^