效果:

数据库:

思路:

利用for遍历,然后创建父节点,再根据父节点创建出子节点。

代码:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using System.Configuration;
using System.Data.SqlClient; namespace TreeView
{
public partial class TreeView : System.Web.UI.Page
{
string connection = ConfigurationManager.ConnectionStrings["SQLconnection"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
select();
CreateTree();
}
DataSet ds = new DataSet();
public DataSet DataS(string sql, string tablename)
{
SqlConnection con = new SqlConnection(connection);
SqlDataAdapter sqlda = new SqlDataAdapter(sql, con);
sqlda.Fill(ds, tablename);
return ds;
} //ParentMenu:父节点,
//Grade:标识这是第几级节点,
//Flag:标识是不是尾结点,1是 0 不是,
//href:指向的链接
public void select()
{
string sql = "select * from treeview";
ds = DataS(sql, "test");
} public void CreateTree()
{
try
{
DataTable dt = ds.Tables["test"];
SortedList sl = new SortedList();
TreeNode tn = new TreeNode();
if (dt.Rows.Count <= )
{
tn.Text = "空";
tn.Value = "";
tn.NavigateUrl = "";
tn.Target = "";
tn.Expanded = false;
tn.SelectAction = TreeNodeSelectAction.SelectExpand; }
else
{
for (int i = ; i < dt.Rows.Count; i++)
{
//创建父节点
if (dt.Rows[i]["Grade"].ToString() == "")
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i]["MenuName"].ToString();
node.Value = dt.Rows[i]["MenuID"].ToString();
if (dt.Rows[i]["Flag"].ToString() == "")
{
node.NavigateUrl = dt.Rows[i]["href"].ToString();
tn.Target = "_bank";
}
node.Expanded = false;
node.SelectAction = TreeNodeSelectAction.Expand;
sl.Add(node.Value, node);
tv_Method.Nodes.Add(node);
}
else
{
//查找父节点
TreeNode ParentNod = (TreeNode)sl.GetByIndex(sl.IndexOfKey(dt.Rows[i]["ParentMenu"].ToString()));
//创建子节点
TreeNode tnChild = new TreeNode();
tnChild.Text = dt.Rows[i]["MenuName"].ToString();
tnChild.Value = dt.Rows[i]["MenuID"].ToString();
if (dt.Rows[i]["Flag"].ToString() == "")
{
tnChild.NavigateUrl = dt.Rows[i]["href"].ToString();
tnChild.Target = "_bank";
}
tnChild.Expanded = false;
tnChild.SelectAction = TreeNodeSelectAction.Expand;
sl.Add(tnChild.Value, tnChild);
ParentNod.ChildNodes.Add(tnChild);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}

最新文章

  1. 给hadoop新手的一封信:Hadoop入门自学及对就业的帮助
  2. CSS3--overflow属性
  3. Sort the Array
  4. Web数据持久化存储IndexedDB(不常用)
  5. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )
  6. 服务器设置SSH 长连接
  7. Python自动化之常用模块
  8. unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。
  9. DataTable列上多值运算
  10. mysqldump: command not found问题解决
  11. C++/C常量
  12. html:input的type=number的时候maxlength失效问题
  13. Git基础(四) 查看已暂存和未暂存的修改
  14. 总结Flink状态管理和容错机制
  15. vi怎么查找关键字
  16. pytorch如何能够保证模型的可重复性
  17. AOP 详解
  18. leetcode743
  19. k-近邻算法 python实现
  20. Python之文件操作:os模块

热门文章

  1. awk算术运算一例:统计hdfs上某段时间内的文件大小
  2. Word中公式从单栏排版变为双栏排版后公式和编号错开了
  3. OpenShift helm的安装
  4. jQuery中,选择器既匹配开头又匹配结尾
  5. Shell学习:read的选项及用法
  6. DevExpress:下拉框绑定数据源 (ComboBoxEdit,LookUpEdit)
  7. 关于configure和Makefile
  8. C调用栈重温
  9. CUDA编程札记
  10. 算法笔记_049:奇偶数排序(Java)