前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态生成TreeView方法(二)

动态生成TreeView方法(二)

作者头像
lpxxn
发布2018-01-31 10:37:15
1.2K0
发布2018-01-31 10:37:15
举报
文章被收录于专栏:技术之路技术之路

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

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

看一下效果图

前台代码:

代码语言:javascript
复制
<%@ 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>

后台代码:

代码语言:javascript
复制
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;
        }
 


    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-11-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档