带线的无限级下拉树列表-完整示例篇

简介:

前言:

复制代码
今天在群里有人问起了我一个比较远古的问题:带线的无限级下拉树列表他运行不起来。

最关键的又扯上了CYQ.Data 框架,让我一时觉得比较悬,因为文章是08年时写的,而框架最今年才发力完善的,

所以两者应该是没啥联系的,不过这一问也好,给了我一个写此文章的机会。

ps:他把示例的其它代码当成是 CYQ.Data 框架 里的代码。

复制代码

 

 

本文将对之前的代码进行小小的简化,并为之建立一个完整的应用示例,以下为正式应用步骤:

 

一:新建项目

1:将IDropDownTree及DropDownTree放到类里,如下图:

简化后的代码如下:

IDropDownTree

IDropDownTree

 

DropDownTree

DropDownTree

 

二:数据库数据准备

1:为方便示例,这里用了Access数据库,新建一个Product表,并为之添加了几行数据,如图:

 

三:引用CYQ.Data框架来实现

1:项目添加CYQ.Data引用

2:新建ProductTree类,实现IDropDownTree接口

A:为表增加枚举,如下:

复制代码
namespace  Entity
{
    
public   enum  TableNames
    {
        Product
    }
    
public   enum  Product
    {
        ID,
        ParentID,
        Name
    }
}
复制代码

 

B:实现接口

复制代码
using  Tree;
using  CYQ.Data;
using  Entity;
using  CYQ.Data.Table;
using  System.Collections.Generic;

namespace  Tree
{
    
///   <summary>
    
///  作者:路过秋天
    
///  博客: http://cyq1162.cnblogs.com
    
///  秋色园: http://www.cyqdata.com
    
///   </summary>
     public   class  ProductTree : IDropDownTree
    {
        
int  count  =   0 ;
        
private  MAction action;
        
public  ProductTree()
        {
            action 
=   new  MAction(TableNames.Product);
        }

        
#region  IDropDownTree 成员

        
public  Dictionary < string string >  GetChildList( string  parentID)
        {

            MDataTable table 
=  action.Select( 0 0 " ParentID= "   +  parentID,  out  count);
            Dictionary
< string string >  dic  =   null ;
            
if  (count  >   0 )
            {
                dic 
=   new  Dictionary < string string > ();
                
foreach  (MDataRow row  in  table.Rows)
                {
                    dic.Add(row.Get
< string > (Product.ID), row.Get < string > (Product.Name));
                }
            }
            
return  dic;
        }

        
public  DropDownTree DropDownTree
        {
            
get
            {
                
return   new  DropDownTree( this );
            }
        }

        
#endregion

        
#region  IDisposable 成员

        
public   void  Dispose()
        {
            action.Close();
        }

        
#endregion
    }
}
复制代码

项目解决方案如下图:

 

四:展示应用结果

1:新建测试站点WebDemo项目,并将数据库放到App_Data目录下,如图:

2:Web.config配置好数据库链接如下:

复制代码
< appSettings >
    
< add  key ="AccessDbNameForWeb"  value ="App_Data/tree.mdb" />
</ appSettings >
< connectionStrings >
    
< add  name ="Conn"  connectionString ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}"  providerName ="System.Data.OleDb" />
</ connectionStrings >
复制代码

 

3:Default.界面调用代码

前台:

放一下拉框: < asp:DropDownList  ID ="ddlProduct"  runat ="server" ></ asp:DropDownList >

 

后台:

  protected   void  Page_Load( object  sender, EventArgs e)
 {
     
new  Tree.ProductTree().DropDownTree.Bind(ddlProduct, null " 0 " );
 }

 

4:最后的输出结果,如图

 

最后提示:

1:提供示例源码下载:--点击下载 [最近很少写文,点击下载的你别忘了点下推荐哦^-^]]

2:秋色园V2.5将在近期发布,欢迎提前浏览 http://www.cyqdata.com

 

 

PS:传说点一下推荐会有10个园豆,喜欢麻烦点一下“推荐”,thank you very much!!

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/12/27/1918317.html

相关文章
|
3月前
|
开发框架 前端开发 JavaScript
使用DevExpress的GridControl实现多层级或无穷级的嵌套列表展示
使用DevExpress的GridControl实现多层级或无穷级的嵌套列表展示
文本---视频网站好的构思,应该有类别构思,一个类别能够将它呈现出列表集合,以列表排序,如何完成类别构建,使之展现同一类,是一个好的视频写法
文本---视频网站好的构思,应该有类别构思,一个类别能够将它呈现出列表集合,以列表排序,如何完成类别构建,使之展现同一类,是一个好的视频写法
|
12月前
|
人工智能 自然语言处理 语音技术
elementUI使用v-for创建无限级导航栏—— 递归组件
elementUI使用v-for创建无限级导航栏—— 递归组件
188 0
“关联表单”组件文本数据筛选只支持包含条件的解决方案
在“关联表单”中使用数据筛选功能筛选文本时条件只有”包含“,此文章通过增加一个”下拉单选“组件,变相解决这个问题。
191 0
|
数据库 开发者 索引
列表增加元素|学习笔记
快速学习列表增加元素
列表增加元素|学习笔记
|
移动开发
H5新增获取元素方式
H5新增获取元素方式
169 0
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
370 0
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
|
JavaScript 数据建模 数据格式
【自然框架】n级下拉列表框的原理
  其实原理也很简单,分成两个部分,一个是服务器端,一个是客户端。     首先要设置记录集,这里用DataSet来装载,二级联动,里面就要有两个DataTable;三级联动,里面就要有三个DataTable。
1203 0
|
容器
左侧固定,右侧自适应的布局方式(新增评论区大佬教的方法)
一.浮动布局 1.先让固定宽度的div浮动!使其脱离文档流。 2.margin-left的值等于固定div的宽度相等。 .
833 0