using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace WebApplication4
{
public partial class WebForm1 : System.Web.UI.Page
{
DataTable _dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
_dt.Columns.Add("code");
_dt.Columns.Add("parentCode");
_dt.Columns.Add("name");
DataRow dr=_dt.NewRow();
dr[0]="01";
dr[1]="0";
dr[2]="顶层1";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "011";
dr[1] = "01";
dr[2] = "子层1";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "012";
dr[1] = "01";
dr[2] = "子层2";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "02";
dr[1] = "0";
dr[2] = "顶层2";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "021";
dr[1] = "02";
dr[2] = "子层1";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "022";
dr[1] = "02";
dr[2] = "子层2";
_dt.Rows.Add(dr);
dr = _dt.NewRow();
dr[0] = "0221";
dr[1] = "022";
dr[2] = "子子层1";
_dt.Rows.Add(dr);
BuildTree(null, _dt);
}
/// <summary>
/// 绑定树
/// </summary>
/// <param name="tn"></param>
private void BuildTree(TreeNode tn, DataTable dtDept)
{
int i;
// 空节点时创建根节点,父ID为0的当作根节点
if (tn == null)
{
this.TreeView1.Nodes.Clear();
for (i = 0; i < dtDept.Rows.Count; i++)
{
if (dtDept.Rows[i]["parentCode"].ToString() == "0")
{
TreeNode tmp = new TreeNode(dtDept.Rows[i]["name"].ToString());
tmp.Value = dtDept.Rows[i]["code"].ToString();
tmp.ToolTip = dtDept.Rows[i]["parentCode"].ToString();
tmp.Checked = true;
TreeView1.Nodes.Add(tmp);
}
}
// 循环递归创建树
for (i = 0; i < TreeView1.Nodes.Count; i++)
{
BuildTree(TreeView1.Nodes[i],dtDept);
}
}
else // 节点非空为递归调用
{
for (i = 0; i < dtDept.Rows.Count; i++)
{
if (tn.Value.ToString() == dtDept.Rows[i]["parentCode"].ToString())
{
TreeNode tmp = new TreeNode(dtDept.Rows[i]["name"].ToString());
tmp.Value = dtDept.Rows[i]["code"].ToString();
tmp.ToolTip = dtDept.Rows[i]["parentCode"].ToString();
tn.ChildNodes.Add(tmp);
}
}
for (i = 0; i < tn.ChildNodes.Count; i++)
{
BuildTree(tn.ChildNodes[i],dtDept);
}
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
this.Label1.Text = TreeView1.SelectedValue;
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "updatePanel1show", "change_css('" + Label1.Text + "')", true);
TreeView1.ExpandAll();
}
}
}
webform 创建树的更多相关文章
-
使用Ext 创建树
ext使用的是ext3.4.0版本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> < ...
-
WebForm中创建树节点TreeNode
Tree: namespace ECTECH.NorthSJ.Web.SysData { public partial class testTree : BasePage { ; protected ...
-
用数据表创建树_delphi教程
数据库结构:字段 类型ID 整型 索引(无重复)name 文本father 整型 //tree初始化procedure TForm1.FormActivate(Sender: TObject);var ...
-
遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)
"root":{ "children":[ { "name":"AA", "children":[ ...
-
Qt 使用大神插件快速创建树状导航栏
前言 本博客仅仅记录自己的采坑过程以及帮助网友避坑,方便以后快速使用自定义控件,避免重复出错. 下载插件 大神 Github Qt 自定义控件项目地址:https://github.com/feiya ...
-
SAP CRM 树视图(TREE VIEW)
树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...
-
HTML5 程序设计 - 使用HTML5 Canvas API
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...
-
二叉树的创建和遍历(C版和java版)
以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...
-
JavaScript高级编程 (1) - javscript是什么
<重温javascript>这是一系列 javascript 的学习笔记,部分内容摘自书本或者网络,我这里只是基于自己的理解进行了梳理整理. 一个完整的 javscript 实现是由以下3 ...
随机推荐
-
step by step 之餐饮管理系统四(日志模块实现)
三天前基本上把数据库表设计的文档写好,今天想到了一个问题,还要再加几个表,一个是log表,用来记录系统日志,另外再加几个字典表,一些需要配置的数据但又不好放在像xml文件里面的数据可以放在这些字典表里 ...
-
CSS用border绘制三角形
使用border绘制三角形的思路,就是border尺寸设置一个较大的值,元素自身的宽高设置为0,全部由边线占据,这样每边就会显示为四分之一块的三角形.这样不借助图片,可以直接绘制出三角形了. 一个栗子 ...
-
Gaea是支持跨平台具有高并发、高性能、高可靠性,并提供异步、多协议、事件驱动的中间层服务框架
Gaea是支持跨平台具有高并发.高性能.高可靠性,并提供异步.多协议.事件驱动的中间层服务框架 Gaea:58同城开源的中间层服务框架 https://github.com/58code/Gaea 中 ...
-
https://doc.opensuse.org/projects/kiwi/doc/
KIWI 是用于创建操作系统映像的系统.映像是带有一个文件的目录,该文件包含操作系统.其应用程序与配置.操作系统的文件系统结构.可能的附加元数据,以及(取决于映像类型)磁盘几何属性和分区表数据.通过 ...
-
用java命令重新签名apk
apk简介 APK是AndroidPackage的缩写,即Android安装包(apk).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或Andr ...
-
前端(各种demo)二:左侧导航栏的折叠和打开(不使用js)基础版和升级版
1.给div设置定位. 复习一下—— css中position有五种属性: static:默认值,没有定位 absolute:绝对定位,相对于父级元素进行定位 relative:相对定位 fixed: ...
-
(7)udp-socket
# upd 协议:(1)#client 端口:import socketsk = socket.socket(type=socket.SOCK_DGRAM)message = "我来了大哥& ...
-
ubuntu python的升级与回滚
转自:https://www.cnblogs.com/wmr95/p/7637077.html 正常情况下,你安装好ubuntu16.04版本之后,系统会自带 python2.7版本,如果需要下载新版 ...
-
【bioinfo】生物信息学——代码遇见生物学的地方
注:从进入生信领域到现在,已经过去快8年了.生物信息学包含了我最喜欢的三门学科:生物学.计算机科学和数学.但是如果突然问起,什么是生物信息学,我还是无法给出一个让自己满意的答案.于是便有了这篇博客. ...
-
java提取url里的域名
使用java标准类库java.net.URL java.net.URL url = new java.net.URL("http://blog.csdn.net/xxx.png") ...