当前位置: 首页 > news >正文

.net 无限分类

1、建立数据库

image

image

image

2、建立一个新页面Default2.aspx,里面拖一个TreeView就好了;

3、修改页面后台代码:Default2.aspx.cx;

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
IList list = new List();

protected void Page_Load(object sender, EventArgs e)
{
//首次加载
if (!this.IsPostBack)
{
SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=sa;database=coll");
SqlCommand cmd = new SqlCommand("select * from category", con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
//得到数据库中的所有记录, 并存放到集合之中
while (reader.Read())
{
Category c = new Category();
c.CategoryID = reader.GetInt32(0);
c.ParentID = reader.GetInt32(1);
c.Layer = reader.GetInt32(2);
c.Name = reader.GetString(3);
list.Add(c);
}
reader.Close();
cmd.Dispose();
con.Close();

//执行添加树节点的方法
this.AddTreeNode(0, null);
}
}
///
/// 添加树节点的方法
///
///

父节点
/// 节点
private void AddTreeNode(int parentId, TreeNode node)
{
List categorylist = new List();
//遍历原集合,找到父节点是parentId的对象,加到新的集合
//(里面就全部是父节点为parentId的对象了)
foreach (Category c in this.list)
{
if (c.ParentID == parentId)
categorylist.Add(c);
}
//如果父节点为了parentId的元素的个数不为0
if (categorylist.Count > 0)
{
//遍历集合
foreach (Category cate in categorylist)
{
//构建新节点
TreeNode tNode = new TreeNode();
tNode.Text = cate.Name;
//如果传入的节点为空,则证明此节点为根节点,添加即可
if (node == null)
{
this.TreeView1.Nodes.Add(tNode);
}
//否则,此节点为一般节点,在传入的节点的子节点下加入此节点即可
else
{
node.ChildNodes.Add(tNode);
}
this.AddTreeNode(cate.CategoryID, tNode);
}
}
}
}

相关文章:

  • js 重新梳理 1:indexOf与serch 的区别
  • 继承重载重写多态
  • OpenFire源码学习之二十六:SparkTinder
  • C#抓取网页数据分析
  • POJ 3301
  • 几个常用Request.ServerVariables的中文
  • CodeForces 132C 一道简单 dp
  • 详解C#正则表达式语法的相关规则
  • PHP-cli简介
  • 致创业者的一封信(转)
  • DOM(转)
  • 修改文件注册数据库连接配置,可不在Net Manager里配置
  • Apache+Mod_Python配置
  • 【BestCoder】【Round#29】
  • struts2Demo
  • Angularjs之国际化
  • ComponentOne 2017 V2版本正式发布
  • css的样式优先级
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js操作时间(持续更新)
  • js如何打印object对象
  • Protobuf3语言指南
  • Rancher如何对接Ceph-RBD块存储
  • socket.io+express实现聊天室的思考(三)
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Vue 2.3、2.4 知识点小结
  • 阿里云购买磁盘后挂载
  • 学习Vue.js的五个小例子
  • 一、python与pycharm的安装
  • 自定义函数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #QT项目实战(天气预报)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (23)Linux的软硬连接
  • (libusb) usb口自动刷新
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (十三)Maven插件解析运行机制
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)重识new
  • (轉貼) UML中文FAQ (OO) (UML)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .bat批处理(一):@echo off
  • .Net Core与存储过程(一)
  • .net快速开发框架源码分享
  • .NET正则基础之——正则委托
  • [android学习笔记]学习jni编程
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ3757] 苹果树
  • [C++]:for循环for(int num : nums)
  • [ESP32 IDF]web server
  • [FROM COM张]如何解决Nios II SBTE中出现的undefined reference to `xxx'警告