树状目录+无穷阶层

Posted petewell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树状目录+无穷阶层相关的知识,希望对你有一定的参考价值。

平时看到数据库动态产生阶层菜单,产生方式有下方两项:

  1. 使用TreeView + xml产生
  2. 使用 ul 与 li ,运用递归的逻辑;搭配CSS+javascript 来设计

最近学到的这个阶层菜单写法,运用上比较简单,以下开始说明做法


前言:

第一篇程序文章终于生出来了。

平时看到的数据库动态产生阶层菜单,产生方式有下方两项:

  1. 使用TreeView + xml产生
  2. 使用
    • ,运用递归的逻辑;搭配CSS+JavaScript 来设计
      1. 可以参考 91大的?MenuMatic + [ASP.NET]递归长menu
      2. 喵大的ASP.NET 2.0 使用数据表动态产生TreeView的树状结构

最近学到的这个阶层菜单写法,运用上比较简单,以下开始说明做法。

前置介绍与准备:

一、dTree 官网:http://www.destroydrop.com/javascripts/tree/

  1. 它是一个无穷的树状菜单,并可记录开启状态
  2. 同一个画面中可以建立多个树状菜单
  3. 支持浏览器:IE 5+、Netscape 6+、Opera 7+、Mozilla (可放心使用)

二、基本写法:



三、完整写法:

规格:

a.add(编号, 父编号,‘文字‘,‘网址‘,‘提示文字‘,‘目标‘,‘一般图示‘,‘点选图示‘,‘开启状态‘);

范例:

a.add(1, 0, ‘关于我‘, ‘me.aspx‘, ‘自我介绍‘, ‘main‘, ‘folder.gif‘, ‘open_folder.gif‘,true);

四、属性设定:

a.config.target = "mytarget";??? → 默认的开启目标位置
a.config.folderLinks = true ;??? → 目录是否可连结
a.config.useSelection = true; → 是否以高亮度呈现目前选项
a.config.useCookies = true;?? → 是否纪录目前开启状态
a.config.useLines = true;??????? → 是否绘制节点间的线条
a.config.useIcons = true;??????? → 是否呈现图示
a.config.useStatusText = false ;???? → 以节点名称取代网址显示在状态列
a.config.closeSameLevel = false; → 是否关闭未点选的同一层节点
a.config.inOrder = false ;??????? → 假如父节点总是放在子节点之上,可设定此设定为true以加快速度。

树状结构数据库:

以下是设计无穷菜单结构的数据库字段;

1.sn 为编号 , 2. ofsn 为父编号 , 3. title 为 标题 , 4. url 为连结字符串

技术图片

技术图片

ASP.NET前置介绍与准备:

web.config


        

.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" Debug="true" %>





    树状目录
    " type="text/css" rel="stylesheet" />
    


    

.vb

Imports System.Data
Imports System.Text

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            ‘调用 dtree,建立树状菜单
            dtree()
        End If
    End Sub

    Private Function dtree() As String
        ‘StringBuilder类 表示一个和字符串相似的对象,它的值是一个可变动的连续符值,
        ‘之所以可变动的原因是一旦以附加、移除、取代或插入符的方式建立后就可以修改。

        Dim sb As New StringBuilder
        Using connect As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
            connect.Open()
            ‘sn为编号,ofsn为父编号
            Using Adp_Links As New OleDb.OleDbDataAdapter("SELECT * FROM links ORDER BY ofsn , sn", connect)
                Dim mydataset As New DataSet
                Adp_Links.Fill(mydataset, "links")
                If mydataset.Tables("links").Rows.Count > 0 Then

                    ‘
                    ‘mydataset有值后,开始附加数据给sb
                    ‘
                    sb.Append("")

                    ‘将sb的字符串指定给 LiteMenu
                    Me.LiteMenu.Text = sb.ToString
                End If
            End Using
        End Using
        ‘回传 LiteMenu 的数据
        Return (Me.LiteMenu.Text)
    End Function
End Class

画面结果图:

技术图片

检视html源代码:

技术图片

结语说明:

Sample Code:Dtree_ASP.NET_for_VB.rar

以上是小弟的示范,写法、观念上不足之处,请大家见谅,也麻烦大家不吝给予指教。

文章发布后的自我心得(杂语):

发纪录性的文章,压力真的很大,一直想很怕观念错误、写得不好(谜之声:不做永远不能确定自己的问题)。

正好这次第一篇技术的记录文章,给自己鼓励与继续前进的动力。

原文:大专栏  树状目录+无穷阶层


以上是关于树状目录+无穷阶层的主要内容,如果未能解决你的问题,请参考以下文章

如何用HTML做树状的目录

C语言试题119之利用递归方法求 5的阶层

Linux 目录详解 树状目录结构图

Linux树状目录结构

104)PHP,目录树状输出

递归输出 树状 目录