C#(帮忙看看代码)如何动态生成treeview

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:56:29
这是我已有的代码 用的是递归方法

const int VirtualRootId = 0; //虚拟的根节点id 表中Sort_fatherid=0表示无实际父节点
DataBasePath p = new DataBasePath();
SqlConnection conn = new SqlConnection(p.GetPath());
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT Sort_id, Sort_nameCH,Sort_fatherid FROM 物种分类名检索表 ORDER BY Sort_id ASC", conn);
DataTable dt = new DataTable();
da.Fill(dt);
CreateTreeView c = new CreateTreeView();
c.CreateTreeViewRecursive(treeView1.Nodes, dt, VirtualRootId);
===============================================================
以上是我form中的调用部分
下面是我生成treeview的类
==============================================================
class CreateTreeView
{
public void CreateTreeViewRecursive(TreeNodeCollection nodes,DataTable dataSource, int parentId)
{

string fliter = String.Format("ParentId={0}", parentId);
DataRow[] drArr = dataSource.Select(fliter);

// 这里循环添加 父节点
public void ShowCategory()
{
DataTable dt = JSXZBLL.CDCategoryManage.GetCatetoryNameForParentNode();
foreach (DataRow row in dt.Rows)
{
TreeNode node = CreateNode(Convert.ToInt32(row["id"]), Convert.ToString(row["name"])
CCreateChild(Convert.ToInt32(row["id"]),node);
//以下这句话可要可不要
node.NavigateUrl = "";
this.TreeView1.Nodes.Add(node);
}
}
这里是公用的
public TreeNode CreateNode(int id, string name)
{
TreeNode node = new TreeNode();
node.Text =name;
return node;
}
//treeview 1 循环添加子节点
public void CCreateChild(int parentid, TreeNode node)
{
DataTable dt = JSXZBLL.CDForumlistManage.CGetForumListNameForChildById(parentid);
foreach (DataRow row in dt.Rows)