一、 目录树的广泛应用

为了这段内容,在百度上搜了搜,内容一大通,相关的竟没有。搜什么搜嘛?用处不是明摆着吗?资源管理器文件夹的管理,论坛中多级论坛的管理,java中的awt正是缺乏包括树形目录这样的组件才用处受限……谁这么没礼貌,一点面子都不给,叫我怎么讲下去?清了清嗓子:

在我们项目中常常会出现自关联的数据表,从整体看去,整个表就呈现为一个树形数据结构。当我们对这个表进行显示、编辑时,如果不采用好的表现形式,会显得很笨拙,采用树形目录进行管理显然是一个不错的主意。

(斧子抡了一圈,感觉好极了,接着讲…)在web中树形目录可以用javascript实现,但一些细节问题上例如树形目录传值(点击一个子节点,打开相关链接),多级目录以及节点的增加、删除、拖动上受各种制肘。其实采用第三方控件显然也是个不错的主意。

二、 关于智岛目录树控件

好,我们今天的主人公–轻便犀利的智岛目录树控件(下载地址:http://www.oapro.com/ostarocx/download/otree.ocx)出场了。它采用vc++6.0开发,是标准的ocx控件,可以应用于windows环境下vb、vc、pb、dephi、asp、jsp等编程语言中。它采用xml文件作为接口文件,该接口文件既可以是一个现成的文件,也可以是动态生成的xml格式文件(换句话说可以基于数据库动态生成目录树节点)。智岛目录树控件支持节点的复制、移动、重命名以及权限控件,并且没有对目录的层数进行限制。介绍了这么多,想必欲欲越试了。在asp中小试牛刀先:

三、 注册添加控件

1. 注册智岛目录树控件

下载(下载地址:http://www.oapro.com/ostarocx/download/otree.ocx)智岛目录树控件(其文件名为otree.ocx)后,按照如下方法注册控件:

点击“开始”→“运行”;在运行对话框中输入以下命令:

regsvr32 < otree.ocx文件的绝对路径>  注册智岛目录树控件控件

regsvr32 /u < otree.ocx文件的绝对路径> 解除智岛目录树控件的注册

2. 在页面中添加智岛目录树控件

在页面中加入以下代码,即可插入智岛目录树控件:

codebase="http://www.oapro.com/ostarocx/download/otree.ocx">

其中:

width和height:指控件的显示宽度和高度;

id:指控件对象的名称,通过该名称实现对控件的操作;

codebase:指没有安装智岛目录树控件的客户端运行该页面时自动下载安装该控件的地址。

三、 从xml文件生成树形目录

1. xml文档格式

xml是个好东东,不过也要符合一定的格式呀,不然控件可不认哦!下面是一份xml文档格式:

|开发部|

其中:

nodename:指节点名称,如有上级节点,要包括上级节点名称,节点名称间以符号"\"分隔。例“我的办公桌\公告通知\电子邮件”表明根节点为“我的办公桌”,父节点为“公告通知”,本节点为“电子邮件”。如果问你包含五级的节点名称是怎样时,呵呵,不要拿西红柿扔我!

nodetype:节点类型,一般均指“href”。

imageindex:节点名称前显示的小图标,其中0表示文件夹状图标,4表示数据表状图标。

下面是一份xml格式文档源码:

我的办公桌

href

mydesk.aps

0

0

我的办公桌\公告通知

href

公告通知.aps

0

0

我的办公桌\公告通知\电子邮件

0

我的办公桌\公告通知\电子邮件\收件箱

4

我的办公桌\公告通知\电子邮件\发件箱

4

我的办公桌\公告通知\电子邮件\已发邮件

我的办公桌\日程安排

0

我的办公桌\日程安排\日历

2. 代码实现

通过以下语句通知智岛目录树控件打开xml文档:

otree.openxmlfile("")

其中引号内xml文档的绝对路径,例如:

otree.openxmlfile("c:\otree.xml")

运行效果见下图:

已看见你频频点头的样子,但又喃喃自语:如果要根据数据库中内容生成树形目录该…?呵呵,下面我们就进入正题(敢情前面这么多文字是骗稿费的啊?谁?嘘…,小声点,千万别让小编听见):

四、 基于数据库生成树形目录

1. xml文档格式

将树形目录的节点存入数据库,为我们动态形成树形目录打下良好的基础。当然,也有些目录树是表现一个数据库中的数据结构(父节点是数据库名,子节点是数据表)。不管如何,有了前面的基础,现在我们所需做的只是将数据库的内容形成上面格式的xml文档。下面有一份asp源码,将数据库中结构形成xml文档,其中变量datasource存储传递过来的数据库名称。

dim datasource

datasource=request("datasource")

%>

0

|开发部|市场部|

0

strconn="dbq="+server.mappath("db\"&datasource)+";defaultdir=;driver={microsoft access driver (*.mdb)};"

set objconn=server.createobject("adodb.connection")

objconn.open strconn

set rsschema=objconn.openschema(20)

rsschema.movefirst

do until rsschema.eof

if rsschema("table_type")="table" then

%>

\

href

4

|开发部|市场部|

0

end if

rsschema.movenext

loop

set objconn=nothing

%>

2. 代码实现

这时候的接口方法跟直接打开xml文档的不一样了:

otree.setnodexml(otree.httpget("http://www.oapro.com/ostarocx/sample/dataman/otree.asp","datasource=otree.mdb"))

其中方法httpget有二个参数,第一个参数为我们上面介绍的实现数据库转换xml格式的网页地址,一定要为网址格式,不能用相对或绝对路径

(因为目前该方法尚不支持),第二个参数为传递到该文件的参数,这里我们传递的是数据库名称。

按照上面的介绍你很快的实现了一个树形目录,点根节点,展开,点父节点,展开,再点…,咦,怎么没反应?你希望有什么反应?噢,不好意思,差点忘介绍了:

五、 响应节点事件

智岛树形目录控件提供了一个接口方法用以响应节点事件:

eventtreeselchanged(stritemname, stritemdata,stritemtype)

其中:

stritemname 节点名称

stritemdata 节点数据

stritemtype 节点类型

这三个参数由智岛树形目录控件提供给我们开发者,供我们调用。

我们可通过脚本实现对事件的触发,以下是一范例代码:

alert(stritemname);

以上代码实现了点击节点时,弹出一对话框显示该节点的名称。

六、 范例

嗯,好累呀!用敲键盘敲得差点变形的小手揉揉看屏幕看得发酸的大眼睛,又闪过一个念头,再给出一个范例吧:http://www.oapro.com/ostarocx/sample/ogrid_f 。在这个范例中,从下拉框中选择数据库名称后树形目录的内容会发生变化,点击节点会显示该节点所代表的数据表中的数据内容。整个范例充分展示了上面文章内容的技术细节。下面是范例截图:

asp mysql 可编辑树状,基于数据库动态生成树形目录-ASP教程,数据库相关相关推荐

  1. Jquery实现无限级树状结构并动态添加增删改等编辑功能

    点击打开链接 源:http://www.56gee.com/Detail/2012/04/11/8AEB74E423/ <!DOCTYPE html PUBLIC "-//W3C//D ...

  2. mysql如何实现树状结构_实现树状结构的两种方法

    实现树状结构的两种方法 实现树状结构的两种方法 1.递归法 递归是指在函数中显式的调用它自身. 利用递归法实现树状结构的特点是写入数据速度较快,显示速度较慢(在树的分支/层次较多的情况下尤其明显).适 ...

  3. mysql如何实现树状结构数据列表

    1.数据库设计 CREATE TABLE `expense_type` (`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '费用类型唯一主键ID',`NAME ...

  4. Tree树状图的动态增删查改(上)生成树状图

    一.刚学习项目里就有使用到树状图这个功能,树状图这个功能是要用到插件才能做的,我目前发现有两个插件的样式是比较好看的,一个是Layui里面自带的树组件,不过它的文档写的挺少的,而且看不懂:另一个是jq ...

  5. HDU - 6183 Color it(动态开点线段树/树状数组套动态开点线段树)

    题目链接:点击查看 题目大意:给出一个二维平面坐标系,需要完成四种操作: 0:删除所有点 1 xycx\ y\ cx y c:在点 (x,y)(x,y)(x,y) 处添加颜色 ccc 2 xy1y2x ...

  6. P3157 动态逆序对 ,树状数组套动态开点线段树

    题目 洛谷题目链接 题解 在求整体的逆序对的数量时,很好办,直接用树状数组处理即可,不过在这时,我们还需要处理出一个数组pa[]pa[]pa[],其中pa[i]pa[i]pa[i]代表在区间[1,i) ...

  7. 连接目标数据库+无恢复目录连接目标数据库+使用有恢复目录连接目标数据库+注册数据库+目录同步+取消目标数据库的连接...

    连接目标数据库 连接和取消目标数据库 1连接目标数据库:指建立rman和目标数据库之间的连接,有2种方式 1)无恢复目录连接目标数据库 –1使用rman target语句 –2使用rman nocat ...

  8. C#动态生成treeview目录树

    思路: 获取全量树结构数据 通过递归动态添加树子节点 动态生成目录树 TreeView 在这里我第一步就无需复述了!主要是返回如下格式数据 //调用生成目录树方法 DepartmentTree.ini ...

  9. elementui树状菜单tree_Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)...

    这篇博客主要介绍树形控件的两个小小的功能: 下拉菜单 输入过滤框 以CSS样式为主,也会涉及到Vue组件和element组件的使用. 对于没有层级的数据,我们可以使用表格或卡片来展示.要展示或建立层级 ...

最新文章

  1. 如何让您的php也支持pthreads多线程
  2. request请求和response响应时的乱码解决代码
  3. CodeForces 658C Bear and Forgotten Tree 3(构造)
  4. java学习-BeanUtils给对象的属性赋值
  5. 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
  6. Solaris10文件布局
  7. 什么是 Java 内存模型( JMM )
  8. GIF微信表情如何制作
  9. 贝叶斯估计理论——引子
  10. 准备入行java怎么才能更快学习
  11. c语言五子棋学年论文,基于c语言五子棋小游戏生本科论文.doc
  12. win10 android ios,一机多用?Win10可运行安卓和iOS应用
  13. SPRINGBOOT启动流程及其原理
  14. Docker学习笔记(2)--Docker常用命令
  15. eclipse自动排版快捷键 按了没有用 的解决办法
  16. 硬盘文件无法删除提示文件损毁或无法访问的解决
  17. js怎么获取设备的地理位置
  18. 认识UWB的四个误区
  19. 思必驰全新智能硬件品牌“思麦耳”亮相,发布首款360°降噪转写办公神器 京东开售
  20. 放大电路的分析方法(以共射放大电路为例、交流通路、直流通路、三极管等效电路及其如何等效的)

热门文章

  1. 【小白】第一次给华为H58-03服务器装系统
  2. “对使用非SDK接口的限制”的适配实战
  3. Oracle删除表空间的同时删除数据文件
  4. steam怎么转区?
  5. Linux:python数据库(mysql),多线程以及套接子(socket)
  6. python ocr 文字识别_python:使用 cnocr 进行文字识别
  7. 好玩又有趣的APP分享
  8. 计算机教师面试1分钟自我介绍视频,学校面试1分钟自我介绍
  9. 计算机毕业设计源码案例设计基于ssm律师管理系统
  10. 干货 | 实验室信息管理系统LIMS六大特点