动态生成TreeView方法(二)

这次是用递归的方法实现 ,我想大家都知道怎么做吧,就不 多说了,

还是不建议用递归,数据量大了会映响速度,动态生成TreeView方法(一)是我比较喜欢的方法

看一下效果图

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TreeViewPageTwo.aspx.cs" Inherits="WebApplication3.TreeViewPageTwo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <div>        <asp:TreeView id="tv_Method" runat="server">

</asp:TreeView>    </div>    </form></body></html>

后台代码:

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 WebApplication3{public partial class TreeViewPageTwo : System.Web.UI.Page    {private DataTable da = new DataTable(); protected void Page_Load(object sender, EventArgs e)        {if (!IsPostBack)            {                da = CreateTable();                CreateNode();            }

}

//创建父节点        public void CreateNode()        {            DataRow[] rows = da.Select("parentID=0");//取出树的根节点            if (rows.Length > 0)            {foreach (DataRow row in rows)                {                    TreeNode root = new TreeNode();//添加一个节点                    root.Value = row["MenuID"].ToString();                    root.Text = row["MenuName"].ToString();                    root.Expanded = false;                    root.SelectAction = TreeNodeSelectAction.Expand;                    tv_Method.Nodes.Add(root);                    CreateChildNode(root, da);//调用添加子节点                }            }else            {                TreeNode root = new TreeNode();//添加一个节点                root.Value = "为空";                root.Text ="为空";                root.Expanded = false;                root.SelectAction = TreeNodeSelectAction.Expand;                tv_Method.Nodes.Add(root);            }        }

//创建孩子节点        public void CreateChildNode(TreeNode parentNode, DataTable dt)        {//获取父亲节点下面的所有子节点            DataRow[] rows = dt.Select("parentID=" + parentNode.Value);if (rows.Length > 0)            {foreach (DataRow row in rows)                {                    TreeNode node = new TreeNode();                    node.Value = row["MenuID"].ToString();                    node.Text = row["MenuName"].ToString();                    node.Expanded = false;                    node.SelectAction = TreeNodeSelectAction.Expand;                    parentNode.ChildNodes.Add(node);//递归调用添加子节点                    CreateChildNode(node, dt);                }            }        }

//创建Table        public DataTable CreateTable()        {            DataTable dt = new DataTable();            dt.Columns.Add("MenuID", Type.GetType("System.Int32"));            dt.Columns.Add("parentID", Type.GetType("System.Int32"));            dt.Columns.Add("MenuName", Type.GetType("System.String"));

DataRow dr = dt.NewRow();            dr["MenuID"] = 1;            dr["parentID"] = 0;            dr["MenuName"] = "中国";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["MenuID"] = 2;            dr["parentID"] = 0;            dr["MenuName"] = "日本";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["MenuID"] = 3;            dr["parentID"] = 0;            dr["MenuName"] = "美国";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["MenuID"] = 4;            dr["parentID"] = 1;            dr["MenuName"] = "朝阳区";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["MenuID"] = 5;            dr["parentID"] = 1;            dr["MenuName"] = "海淀区";            dt.Rows.Add(dr);

return dt;        }

}}
时间: 2024-10-25 10:16:46

动态生成TreeView方法(二)的相关文章

动态生成TreeView方法(一)

一般情况下生成TreeView我们用的是用递归不建议用递归数据量大了会慢, 小弟今天用SortedList集合实现一下没有技术含量,一看代码大家就会明白.个人也比较喜欢这种方法,数据量大了执行速度也可以. 下一篇方法动态生成TreeView(二)是用递归实现的,有时间可以看一下. 思路: 把节点放到SortedList,里再根据标识找到父节点,加上相应的子节点. 只是一个小例子,有很多方面不足,可以在这个例子上扩展,传参什么的可以自己在数据库里建,等等,让这个例子变成你自己的东西. 效果图:  

WPF动态生成TreeView 之后点击树中的一个节点,怎么打开一个新界面,类似VS一样

问题描述 WPF动态生成TreeView之后点击树中的一个节点,怎么打开一个新界面,类似VS一样<!--treeview的代码--><TreeViewx:Name="tvMenu"ItemsSource="{BindingSource={x:Staticlocal:TreeViewData.Data},Path=RootNodes}"HorizontalContentAlignment="Stretch"Background=&

JavaScript 动态生成方法的例子_javascript技巧

复制代码 代码如下: function User(properties){ for(var i in properties){ //遍历该对象的所有属性,并保证其作用于正确 (function(which){ var p=i; which["get"+p]=function(){ //动态生成的方法 return properties[p]; //返回对象的属性值 }; which["set"+p]=function(val){ //动态生成的方法 properti

用ASP动态生成JavaScript的表单验证代码

javascript|表单验证|动态 表单的验证是开发WEB应用程序中常遇到的一关.有时候我们必须保证表单的某些项必须填写.必须为数字.必须是指定的位数等等,这时候就要用到表单验证了,一般我们常用的表单验证有2种方式: 1.编写JavaScript或VBScript的表单验证函数,在客户端进行验证:2.在表单提交后,使用ASP的方法Request.Form获取表单的输入值进行判断,然后返回结果,这是在服务端进行验证: 这2种方式都有其优缺点,比如第1种方式速度比较快,而且通常使用警告框的方式,用

用ASP动态生成JS的表单验证代码

js|表单验证|动态 表单的验证是开发WEB应用程序中常遇到的一关.有时候我们必须保证表单的某些项必须填写.必须为数字.必须是指定的位数等等,这时候就要用到表单验证了,一般我们常用的表单验证有2种方式: 1.编写JavaScript或VBScript的表单验证函数,在客户端进行验证: 2.在表单提交后,使用ASP的方法Request.Form获取表单的输入值进行判断,然后返回结果,这是在服务端进行验证: 这两种方式都有其优缺点,比如第1种方式速度比较快,而且通常使用警告框的方式,用户能够很快的根

JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)

主要原因:在页面给元素注册点击事件的时候[ $(function () {  XXX }); ],JS动态生成的元素还尚未生成,所以click事件就没有生效   解决方法:   方案一:js动态生成元素后再给其注册事件 [注册事件放在动态生成的js下面(js是从上往下执行的,当注册事件的时候元素已经生成了,就不会出现注册失效的现象了)] 话比较抽象举个例子:   方案二:js动态生成元素的时候给他加上 onClick之类的方法  举个例子: 如果你又更好的方案,那小子受教了~~

jquery中一个方法中动态生成的标签可以被其它方法调用吗

问题描述 jquery中一个方法中动态生成的标签可以被其它方法调用吗 解决方案 在控制台中动态引入jquery的方法jquery几个按钮同时调用一个方法 解决方案二: 可以,就根据div的id或者class找到他,$("#xxxx") 解决方案三: 你应该取得添加的那个JS对象 var dd = $('#attr_info').append(......) 然后再$(dd).eq(..).keyup 解决方案四: 看你代码append是动态添加的item吧..这样你的ajax都没添加到

Bootstrap框架动态生成Web页面文章内目录的方法_javascript技巧

引言在写博客的时候,为了条理性起见,经常会使用许多小标题,当文章长时,需要来回在不同的标题之间穿梭,如果手动添加目录,添加锚点,实在是麻烦,为此,可以动态生成一块目录区域,并使用Bootstrap提供的Affix插件将目录区域固定在页面上.Bootstrap文档便使用了它 准备工作-引入bootstrap.min.js将bootstrap.min.js放入body之前的script标签中,uikit.min.js暂时不引入. 引入相关插件之后,我们的思路是首先根据文章自动生成锚点以及菜单内容,随

Asp.net动态生成html页面的方法分享_实用技巧

    此功能适用于后台数据库功能不强的web站点,即大部分文本不是存放在数据库的记录中,而是放在html文件或者xml文件中,仅仅把索引放到数据库中,如文章标题.类别.查询关键字等.这样适合于后台没有诸如MS Sql Server这样的数据库支持的Web站点.  适用于新闻发布系统,比如sina.163等都是采用动态生成html页面的.     适用于需动态定制页面的程序.比如论坛.聊天室等.可以加载定制好的html页面,来加强美观.     思路     1. 利用如Dw-Mx这样的工具生成