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 创建树的更多相关文章

  1. 使用Ext 创建树

    ext使用的是ext3.4.0版本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> < ...

  2. WebForm中创建树节点TreeNode

    Tree: namespace ECTECH.NorthSJ.Web.SysData { public partial class testTree : BasePage { ; protected ...

  3. 用数据表创建树_delphi教程

    数据库结构:字段 类型ID 整型 索引(无重复)name 文本father 整型 //tree初始化procedure TForm1.FormActivate(Sender: TObject);var ...

  4. 遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)

    "root":{ "children":[ { "name":"AA", "children":[ ...

  5. Qt 使用大神插件快速创建树状导航栏

    前言 本博客仅仅记录自己的采坑过程以及帮助网友避坑,方便以后快速使用自定义控件,避免重复出错. 下载插件 大神 Github Qt 自定义控件项目地址:https://github.com/feiya ...

  6. SAP CRM 树视图(TREE VIEW)

    树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...

  7. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  8. 二叉树的创建和遍历(C版和java版)

    以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...

  9. JavaScript高级编程 (1) - javscript是什么

    <重温javascript>这是一系列 javascript 的学习笔记,部分内容摘自书本或者网络,我这里只是基于自己的理解进行了梳理整理. 一个完整的 javscript 实现是由以下3 ...

随机推荐

  1. postgres 查询数据库所有表名

    select relname as TABLE_NAME ,col_description(c.oid, 0) as COMMENTS from pg_class cwhere relkind = ' ...

  2. iis 301重定向

    把www.a.com重定向到www.b.com 只需在www.a.com上面右键属性---主目录,重定向到url,下面填上www.b.com,再把资源永久重定向勾选上即可. 注意,如果你需要把域名后面 ...

  3. ORACLE日期格式

    to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...

  4. OC语言@property @synthesize和id

    OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...

  5. iOS开发UI篇—Quartz2D简单使用(二)

    iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...

  6. 第一个Java web项目:员工管理系统

    要求: 做一个登陆页面,实现登录,用户名和密码都是admin,登录成功后,用session记录用户名,登录失败,请提示失败原因. 做一个简单的管理系统,实现注册,修改,查询,删除 员工的功能,注册内容 ...

  7. pthread_mutex_lock

    pthread_mutex_lock pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mut ...

  8. Java中interface和abstract class的区别和联系

    interface: interface类似于class,但是只包含函数(只规定参数.函数名.返回类型,不规定函数体).目的是用来建立类和类之间的一种“协议”.一个类可以实现多种接口,来模拟多重继承. ...

  9. php 常用变量与函数

    php 基本函数explode(" ",$str) 字符串转数组 implode(" ",$arr) 数组转字符串strrchr("I love Sh ...

  10. 黑马程序员——【Java基础】——集合框架

    ---------- android培训.java培训.期待与您交流! ---------- 一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是 ...