如何使用Asp.net动态添加树视图中的根节点

我想将DataTable绑定到TreeView.I已编写以下Code.Its目前工作,意味着它显示DataTable但没有根节点的所有数据。

List lstData = GetSPDocuments(); gvDocuments.DataSource = lstData; gvDocuments.DataBind(); DataTable dt = ConvertToDataTable(lstData); TreeNode node1 = new TreeNode("Root"); foreach (DataRow r in dt.Rows) { int nodeLvl = int.Parse(r["ID"].ToString()); string nodeParent = "Folders"; string nodeName = r["Title"].ToString(); TreeNode tNode = new TreeNode(nodeName); ht.Add(nodeLvl.ToString() + nodeName, tNode); if (tvDocs.Nodes.Count == 0) tvDocs.Nodes.Add(tNode); else { nodeLvl--; tvDocs.Nodes.Add(tNode); } } 

如何在这里添加静态根节点??? 请帮忙!

试试这可能对你有帮助。

  protected void Page_Load(object sender, EventArgs e) { conStr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString; conn = new OleDbConnection(conStr); BindTreeViewControl(); } private void BindTreeViewControl() { try { DataSet ds = GetDataSet("Select ProductId,ProductName,ParentId from ProductTable"); DataRow[] Rows = ds.Tables[0].Select("ParentId = 0"); for (int i = 0; i < Rows.Length; i++) { TreeNode root = new TreeNode(Rows[i]["ProductName"].ToString(), Rows[i]["ProductId"].ToString()); root.SelectAction = TreeNodeSelectAction.Expand; CreateNode(root, ds.Tables[0]); treeviwExample.Nodes.Add(root); } } catch (Exception Ex) { throw Ex; } } public void CreateNode(TreeNode node, DataTable Dt) { DataRow[] Rows = Dt.Select("ParentId =" + node.Value); if (Rows.Length == 0) { return; } for (int i = 0; i < Rows.Length; i++) { TreeNode Childnode = new TreeNode(Rows[i]["ProductName"].ToString(), Rows[i]["ProductId"].ToString()); Childnode.SelectAction = TreeNodeSelectAction.Expand; node.ChildNodes.Add(Childnode); CreateNode(Childnode, Dt); } } private DataSet GetDataSet(string Query) { DataSet Ds = new DataSet(); try { OleDbDataAdapter da = new OleDbDataAdapter(Query, conn); da.Fill(Ds); } catch (Exception dex) { } return Ds; } 

和数据库结构是这样的

在此处输入图像描述

 // Suppress repainting the TreeView until all the objects have been created. treeView1.BeginUpdate(); // Clear the TreeView each time the method is called. treeView1.Nodes.Clear(); // create root node TreeNode root = new TreeNode("Root"); // loop and add all child nodes to root node foreach (DataRow r in dt.Rows) { // create child node // add to root node root.Nodes.Add(child); } // add root node to tree view treeView1.Nodes.Add(root); // Begin repainting the TreeView. treeView1.EndUpdate(); 

你有没有得到这个答案? 你快到了。

TreeView控件的名称是什么? 既然你从未说过,我使用的是treeView1 ,并修改了你的代码以包含以下内容:

 private TreeView treeView1; private void TreeView_DataBind() { treeView1.Nodes.Clear(); List lstData = GetSPDocuments(); gvDocuments.DataSource = lstData; gvDocuments.DataBind(); DataTable dt = ConvertToDataTable(lstData); TreeNode node1 = new TreeNode("Root"); treeView1.Nodes.Add(node1); // this is the step you missed foreach (DataRow r in dt.Rows) { int nodeLvl = int.Parse(r["ID"].ToString()); string nodeParent = "Folders"; string nodeName = r["Title"].ToString(); TreeNode tNode = new TreeNode(nodeName); ht.Add(nodeLvl.ToString() + nodeName, tNode); if (tvDocs.Nodes.Count == 0) tvDocs.Nodes.Add(tNode); else { nodeLvl--; tvDocs.Nodes.Add(tNode); } } node1.Expand(); } 

十分简单!