webform 创建树

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();

}
    }
}

时间: 2024-12-11 01:49:39

webform 创建树的相关文章

创建树 - #号法

#创建树,让树的每一个节点都变成度数为2的树 通过先序遍历124###3##可以唯一确定一棵树. // nonrecursion.cpp // 对树的操作 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <stack> using namespace std; // 二叉树表示法 typedef struct BiTNode { int data; struct

Windows Server 2012(单林、多树、多站点)AD 部署系列(五)创建树域

本章博文开始在BJ.SH.GZ站点为林bicionline.org 创建树域控及调配的相关DNS等功能. 网络配置: 1.为BJ站点ds04.SH站点pdc02和GZ站点ad02配置网络, IP配置分别如下:(注:在创建域树环境时,确保加入域树环境的计算机网络dns地址指向建立林时的第一台域控制器DNS地址 ) ds04:172.16.10.104 ,子网掩码:255.255.255.0 网关:172.16.10.254 ,DNS 172.16.10.100 , ad02:172.16.29.1

树和森林v2.0 层次非递归创建树和森林,森林中的树不连

#include <iostream> #include"queue.h"//之前写的类 #include"stack.h" //之前写的类 using namespace std; /* 用二叉树的方式实现 root指针指向第一棵树的根节点 */ template <class T> class Forest; //======================================== // 森林节点类声明 template &l

使用Ext 创建树

ext使用的是ext3.4.0版本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Hello-Ext</title> <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-

ExtJs通过后台动态创建树

ExtJs动态创建树的方法是:当树的TreeStore要加载的时候,通过ajax请求后台数据,根据后台返回数据动态加载树结构. 正常情况下我们定义TreeStore是这样定义的: var tree = Ext.create('Ext.data.TreeStore', { root : { expanded : true, children : [ { text : "操作", id : "operator", expanded : true, children :

通过前序(后序)+中序创建树

通过二叉树的前序遍历和中序遍历创建树 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct NODE { int nValue; struct NODE* pLeft; struct NODE* pRight; }BinaryTree; int Getxb(char* inorder,int num) { //得到根在中序遍历中的下标 for(int i=0;i<strlen(

jstree插件的使用(进阶)——动态json数据创建树

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- jstree css样式 --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/lib

net core 通过js打印集合(创建树)

结合ASP.NET CORE,将控制器执行后的数据结果打印在网页控制台 将行数据转为树形结构(采用linq+lambda+递归) using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace WebApplication1.Logic.CreateTree { public class Node { public int id; public s

二叉树的镜像

什么是二叉树的镜像呢? 我们可以自己画一颗二叉树.然后根据照镜子画出它的镜像. 如: 我们不能一次得到二叉树的镜像,要想得到一颗二叉树的镜像,有以下几个步骤: (1)先交换根的左子树和右子树 (2)交换6的左子树和右子树                      (3)交换10的左子树和右子树 得出以上规律后,就可以写代码喽: class BinaryTreeNode { public: BinaryTreeNode(const T& data) :_data(data) ,_left(NULL