闲极无聊写的递归, 分类
来源:互联网 发布:唐筛3个数据都大于1 编辑:程序博客网 时间:2024/06/05 16:22
表结构,在父类的ID中保存相对应的类别ID,以达到无限级数的栏目实现
类别ID 类别名称 父类的ID
求类别表达的写法
--数据库的建立角本及添加的数据
create table [TypeTable]
(
[AutoID] int identity(1,1) primary key,
[Name] varchar(40) not null,
[ParentID] int default(0)
)
--添加数据
insert into typetable values('大类一',0)
insert into typetable values('大类二',0)
insert into typetable values('大类三',0)
insert into typetable values('大类四',0)
insert into typetable values('大类五',0)
insert into typetable values(' 大类一 子类一',1)
insert into typetable values(' 大类一 子类二',1)
insert into typetable values(' 大类一 子类三',1)
insert into typetable values(' 大类一 子类四',1)
insert into typetable values(' 大类二 子类一',2)
insert into typetable values(' 大类二 子类二',2)
insert into typetable values(' 大类二 子类三',2)
insert into typetable values(' 大类二 子类四',2)
insert into typetable values(' 一 大类 二子类 的子类一',7)
insert into typetable values(' 一 大类 三子类 的子类一',8)
-----
数据结构应该是这个样子的
程序实现
首先添加对SqlClient命名空间的引用
using System.Data.SqlClient;
private void Page_Load(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
using(SqlDataAdapter sqla= new SqlDataAdapter("select * from typetable",new SqlConnection("server=.;uid=sa;pwd=123456;database=xmlhttp")))//读取数据库中的数据
{
sqla.Fill(ds,"TypeTalbe");
}
DataTable dt = ds.Tables[0];
ArrayList arryList = new ArrayList(); //新建数组保存读取的栏目名称
this.GetChildren(0,ref dt,ref arryList); //递归读取栏目,这里的0就相当于根结点
foreach(object o in arryList)
{
Response.Write("<br>"+o.ToString());
}
}
//为了传值的方便,这里我用了引用参数
private void GetChildren(int parentID,ref DataTable Dt,ref ArrayList arrayList)
{
DataRow[] drv = Dt.Select("ParentID = "+parentID); //查找相对应的父结点ID
if(drv.Length > 0) //这样就表明还有子类了,我们要接着递归
{
foreach(DataRow dr in drv)
{
arrayList.Add(dr["Name"]); //添加栏目名称
this.GetChildren(int.Parse(dr["AutoID"].ToString()),ref Dt,ref arrayList); //递归
}
}
}
上面的示例运行的时候,页面结果是
大类一
大类一 子类一
大类一 子类二
一 大类 二子类 的子类一
大类一 子类三
一 大类 三子类 的子类一
大类一 子类四
大类二
大类二 子类一
大类二 子类二
大类二 子类三
大类二 子类四
大类三
大类四
大类五
基本达到要求.
- 闲极无聊写的递归, 分类
- 无聊写的无聊东西
- 无聊的递归过程
- 无聊写的
- 无聊时候写的。。。
- 无聊写的压位高精加
- 无聊的写点东西
- 无聊VB写的恶意程序
- 无聊写的POJ3624&&ZOJ1733
- 闲来无聊,自己写的itoa函数
- php之利用递归写无限极分类
- 无聊写排序之 ---- 归并排序(MergeSort) 递归实现
- 无聊写排序之 ---- 归并排序(MergeSort) 非递归实现
- 无聊写排序之 ---- 快速排序(QuickSort) 递归实现
- 无聊写排序之 ---- 快速排序(QuickSort) 非递归实现
- 一个无聊的递归冒泡排序程序
- 看看吧无聊的时候写的
- 无聊的人写一些无聊的话,给无聊的人看
- GoSurf真是奇怪啊。
- asp.net中读取数据库的两种方式
- 老百姓是这样买房的
- 十一道家常小菜详细攻略[图文并茂]
- 认识ASP.NET配置文件Web.config
- 闲极无聊写的递归, 分类
- 用VBScript来检验Email的合法性
- I am in love with it
- 父窗口的文本框中获取弹出子窗口文本框的值!获取多值问题
- 转载 Parklot: 新加坡同事在北京的感受
- 汇编学习笔记(1)
- 执子之手,与子偕老
- Java虚拟机的深入研究
- XP右键菜单