数据库设计:
程序如下:
public partial class _Default : System.Web.UI.Page
{
DataSet ds=new DataSet();
SqlConnection CN = new SqlConnection("server=.;uid=sa;Password=61284449;database=DataItems");
private void Page_Load(object sender, System.EventArgs e)
{
// 定义数据库连接
if(!IsPostBack)
{
for (int i = 0; i < TreeView1.Nodes.Count; i++)
{
TreeView1.Nodes[i].SelectAction = TreeNodeSelectAction.SelectExpand;
}
try
{
//初始化连接字符串
CN.Open();
//添加命令,从数据库中得到数据
SqlCommand sqlCmd= new SqlCommand();
sqlCmd.Connection = CN;
sqlCmd.CommandText = "select * from tbTree";
sqlCmd.CommandType = CommandType.Text ;
SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);
adp.Fill(ds);
}
catch (Exception ex)
{
throw (ex);
}
finally
{
CN.Close();
}
//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);
}
}
// 递归添加树的节点
public void AddTree(int ParentID,TreeNode pNode)
{
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENTID] = " + ParentID;
foreach(DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if(pNode == null)
{ //'̀添加根节点
Node.Text = Row["ConText"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = false;
AddTree(Int32.Parse(Row["ID"].ToString()),Node); //再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["ConText"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()),Node); //再次递归
}
}
}
}