第十讲 TreeView无限级分类
来源:互联网 发布:现在软件行业怎么样 编辑:程序博客网 时间:2024/06/01 13:42
主要内容
Page_Load事件中有代码,建议使用使用Page.IsPostBack
掌握TreeView动态加载数据的两种实现方式
数据绑定介绍
1. 嵌套循环(不建议)
实例操作
public void Nodes()
{
//获取省份信息
string provinceSql = "select * from Province";
DataSet ds = DBHelper.ExecuteDataSet(provinceSql, "province");
foreach (DataRow row in ds.Tables["province"].Rows)
{
//创建节点对象
TreeNode tn = new TreeNode();
tn.Text = row["Name"].ToString();//设置省节点名称
//接下来处理子节点
string citySql = "select * from City where ProvinceID="+Int32.Parse(row["ProvinceID"].ToString());
DataSet cityDS = DBHelper.ExecuteDataSet(citySql, "city");
foreach (DataRow r in cityDS.Tables["city"].Rows)
{
TreeNode cityNode = new TreeNode();
cityNode.Text = r["Name"].ToString();//设置城市节点名
tn.ChildNodes.Add(cityNode);//将子节点添加到对应省份中
}
//最后将省信息添加到树上去
TreeView1.Nodes.Add(tn);
}
}
缺点:是如果需要在子节点下面再添加孙节点时,就需要修改代码再嵌套循环,如果层级多的话,代码也同样会变得复杂。
为了解决这个问题,就有了下面的递归方式:
2. 递归加载,无限级。。。(常用的一种方法,重点推荐)
实例操作
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select * from Nodes";
DataSet dsNode = DBHelper.ExecuteDataSet(sql, "n");
Session["node"] = dsNode;
InitTree(this.TreeView1.Nodes, "0");
}
public void InitTree(TreeNodeCollection tnc, string i)
{
DataView dv = new DataView();
dv.Table = (Session["node"] as DataSet).Tables["n"];
dv.RowFilter = "Classes=" + i;
foreach (DataRowView drv in dv)
{
TreeNode tn = new TreeNode();
tn.Value = drv["id"].ToString();
tn.Text = drv["Name"].ToString();
tnc.Add(tn);
InitTree(tn.ChildNodes, tn.Value);
}
}
Page_Load事件中有代码,建议使用使用Page.IsPostBack
掌握TreeView动态加载数据的两种实现方式
数据绑定介绍
1. 嵌套循环(不建议)
实例操作
public void Nodes()
{
//获取省份信息
string provinceSql = "select * from Province";
DataSet ds = DBHelper.ExecuteDataSet(provinceSql, "province");
foreach (DataRow row in ds.Tables["province"].Rows)
{
//创建节点对象
TreeNode tn = new TreeNode();
tn.Text = row["Name"].ToString();//设置省节点名称
//接下来处理子节点
string citySql = "select * from City where ProvinceID="+Int32.Parse(row["ProvinceID"].ToString());
DataSet cityDS = DBHelper.ExecuteDataSet(citySql, "city");
foreach (DataRow r in cityDS.Tables["city"].Rows)
{
TreeNode cityNode = new TreeNode();
cityNode.Text = r["Name"].ToString();//设置城市节点名
tn.ChildNodes.Add(cityNode);//将子节点添加到对应省份中
}
//最后将省信息添加到树上去
TreeView1.Nodes.Add(tn);
}
}
缺点:是如果需要在子节点下面再添加孙节点时,就需要修改代码再嵌套循环,如果层级多的话,代码也同样会变得复杂。
为了解决这个问题,就有了下面的递归方式:
2. 递归加载,无限级。。。(常用的一种方法,重点推荐)
实例操作
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select * from Nodes";
DataSet dsNode = DBHelper.ExecuteDataSet(sql, "n");
Session["node"] = dsNode;
InitTree(this.TreeView1.Nodes, "0");
}
public void InitTree(TreeNodeCollection tnc, string i)
{
DataView dv = new DataView();
dv.Table = (Session["node"] as DataSet).Tables["n"];
dv.RowFilter = "Classes=" + i;
foreach (DataRowView drv in dv)
{
TreeNode tn = new TreeNode();
tn.Value = drv["id"].ToString();
tn.Text = drv["Name"].ToString();
tnc.Add(tn);
InitTree(tn.ChildNodes, tn.Value);
}
}
0 0
- 第十讲 TreeView无限级分类
- TreeView模块无限级分类
- TreeView的无限级分类
- TreeView控件无限级分类
- 使用TREEVIEW实现无限级分类
- 使用TreeView控件做无限级分类
- 无限级分类(使用TreeView显示)
- 无限级分类(使用TreeView显示)
- Treeview无限分类解决方案
- 无限分类树--Treeview
- asp.net 2.0中treeview控件实现无限级分类
- 无限级TreeView导航
- 无限极分类绑定TreeView控件效果
- 无限极分类绑定TreeView控件效
- asp.net2.0实现TreeView无限级分类(递归法)
- ASP.net 2005 Treeview 无限分类非递归终极解决方案
- 无限分类递归实现TreeView数据绑定代码
- 无限级分类
- 千万别小瞧 键盘这个标准输入
- src/system-alloc.cc:270:3: error: ‘failed_’ was not declared in this scope
- 话唠
- TI Davinci DM6446开发攻略——开发环境搭建
- 模板方法模式在学生资格审查系统(升级版)中的应用和实现
- 第十讲 TreeView无限级分类
- Linux驱动学习笔记之并发控制
- 学习笔记:数据结构(四)哈希表
- Java Web项目中缺少Java EE 6 Libraries怎么添加
- java中string和int互相转化
- nginx模型分析
- RA的两种模式
- Hadoop MapReduce链式实践--ChainReducer
- TI Davinci DM6446开发攻略——UBL移植