数据库:SqlServer2000
表:tree
表结构:

测试数据:

算法:使用递归实现

======================================

asp.net代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace AspNetTest.Common
{
 /// <summary>
 /// tree 的摘要说明。
 /// </summary>

public class tree : System.Web.UI.Page
 {

private DataTable dtPowerTree = new DataTable();
  private DataTable dt=new DataTable();
  protected System.Web.UI.WebControls.DropDownList DropDownList1;
  protected System.Web.UI.WebControls.TextBox TextBox1;
  const string tablename = "tree";
  protected System.Web.UI.WebControls.DropDownList DropDownList2;
  private string strText;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    FillTreeDataTable();
    blTreeDataTable(0);
    dtPowerTree.Clear();

}
         
   // 在此处放置用户代码以初始化页面
  }
  private void FillTreeDataTable()
  {
   string ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
   SqlConnection conn = new SqlConnection(ConnectionString);
   SqlDataAdapter da = new SqlDataAdapter("select Id,PowerName,Layer,ParentId from " + tablename, conn);
   da.Fill(dtPowerTree);
  }
  private void blTreeDataTable(int _ParentId)
  {
   string filter = "ParentId=" + _ParentId;
   string sort = "Id ASC";
   DataRow[] drs = dtPowerTree.Select(filter, sort);
   for(int i=0; i<drs.Length; i++)
   {
    if(Convert.ToInt32(drs[i][3]) == _ParentId)
    {
     int Id = Convert.ToInt32(drs[i][0]);
     string PowerName = drs[i][1].ToString();
     int Layer = Convert.ToInt32(drs[i][2]);

for(int n=1;n<=Layer; n++)
     {
      strText +=  HttpUtility.HtmlDecode("&nbsp;&nbsp;");
      
     }

if(_ParentId!=0)
     {

DropDownList1.Items.Add(new ListItem(strText+"┣"+PowerName,Id.ToString()));
      strText="";
     }
     else
     {

DropDownList1.Items.Add(new ListItem(PowerName,Id.ToString()));
     }

blTreeDataTable(Id);
    }
   }
  }

#region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
   this.Load += new System.EventHandler(this.Page_Load);

}
  #endregion

}
}

转载于:https://www.cnblogs.com/challenge/archive/2006/07/21/456303.html

DropDownList实现无限分级相关推荐

  1. html左侧分级导航,jquery实现无限分级横向导航菜单的方法

    本文实例讲述了jquery实现无限分级横向导航菜单的方法.分享给大家供大家参考.具体实现方法如下: 1. jquery插件版本代码如下: (function($){ $.fn.extend({ dro ...

  2. 使用jstree创建无限分级的树(ajax动态创建子节点)

    首先来看一下效果 页面加载之初 节点全部展开后 首先数据库的表结构如下 其中Id为主键,PId为关联到自身的外键 两个字段均为GUID形式 层级关系主要靠这两个字段维护 其次需要有一个类型 publi ...

  3. php简单网站源码包含数组_PHP无限分级阶梯递归数组排列 以及多层嵌套数组在网页中的解析源码...

    数组递归 PHP无限分级 将数组递归转化成阶梯型数组 数组中包含数组 使用更方便 查看也很方便,网上找的都不是很好,自己写的才是王道 简单的递归 没有什么特别之处  只是自己写的容易理解一点而已! 代 ...

  4. 简单的无限分级类 category, menus, jquery tree view

    1. 简单的无限分级类 category, menus <?phpmysql_connect("localhost","root","root& ...

  5. 无限分级和tree结构数据增删改【提供Demo下载】

    无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以 ...

  6. PHP无限极分类生成树方法,无限分级

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了. 这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function ...

  7. php无限分级快速,PHPTree——php快速生成无限级分类_php技巧

    在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构.这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,需要的朋友可以参考下 它就是PHPTree. git ...

  8. oracle 查询无限开始,Oracle无限分级下查询指定分类下所有子分类Sql

    表结构: create table "KDCategory" ( "CategoryID" INTEGER not null, "CategoryNa ...

  9. 开发日记-20190426 关键词 无限分级界面

    最近公司需要制作这样一个界面,说实话,如果说单纯每次点击界面就全部加载一次数据并刷新界面也可以,也很省脑力,但是说真的,缺乏挑战性以及秒杀问题的快感,所以这里我并不打算这样实现,嘛,还是打算花一点功夫 ...

最新文章

  1. 一次性动态绑定多个droplistdown
  2. Linux命令应用大词典-第25章 备份与还原
  3. zabbix 自定义监控项 获取nginx监控状态
  4. jenkins添加linux作为slave
  5. 5799元!OPPO Find X5 Pro天玑版即将开卖:性能比肩骁龙8
  6. java雪崩_【并发编程】java 如何解决redis缓存穿透、缓存雪崩(高性能示例代码)...
  7. 第一篇:webservice初探
  8. 实时 摔倒识别 /运动分析/打架等异常行为识别/控制手势识别等所有行为识别全家桶 原理 + 代码 + 数据+ 模型 开源!
  9. FLEX地图应用教程集
  10. 紫外分光光度计与紫外可见分光光度计的区别是什么?
  11. DFD图练习(图书管理系统)
  12. 纵行科技联合Kinéis等欧洲企业,开发ZETA星地融合低功耗物联网芯片
  13. poj2187 旋转卡(qia)壳(ke)
  14. PROFINET I/O设备初步开发成功发帖庆贺一下
  15. dvb-c usb android,安卓智能DVB-C高清数字机顶盒
  16. Mocha Pro 平面跟踪插件
  17. 【程序报错】Spring容器启动时报异常:Can not set field to com.sun.proxy.$Proxy
  18. 监听系统开屏、锁屏、解锁、按下home键、按下多任务键【未完待续】
  19. 企业OA有哪些好处?所有企业都要用OA吗?
  20. Caused by: org.postgresql.util.PSQLException: ERROR: column xxx.xxx does not exist

热门文章

  1. 伦敦帝国学院提出局部特征提取新模式D2D:先描述后检测
  2. 成为百万程序员第一步:从安装Python开始
  3. 程序员都喜欢抄袭“代码”,而且还拿着高薪?难道就这么无法无天
  4. centos 6.4/6.5下源码编译安装mysql_CentOS 6.4/6.5下源码编译安装mysql
  5. ACM Fellow发文抨击【同行评审】作弊轻松中顶会
  6. Google 发布图片配对基准及挑战:从系列图像重建三维物体和建筑物
  7. Github | 人脸识别手册 (分类论文集)
  8. 何恺明组又出神作!最新论文提出全景分割新方法
  9. 《Python编程从入门到实践》记录之类的使用
  10. 对于原始轨迹的噪声过滤方法和曲率计算方法