树状目录+无穷阶层

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

  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


    树状目录
    " 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

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

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

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

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

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

原文地址:https://www.cnblogs.com/petewell/p/11495878.html

时间: 2024-11-08 12:08:37

树状目录+无穷阶层的相关文章

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

1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/usr/bin类似. /boot/ 引导程序文件,例如:kernel.initrd:时常是一个单独的分区[6] /dev/ 必要设备, 例如:, /dev/null. /etc/ 特定主机,系统范围内的配置文件. 关于这个名称目前有争议.在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为

Vim树状目录插件NERDTree安装和使用

安装过程: cd ~ mkdir nerdtree cd nerdtree wget http://www.vim.org/scripts/download_script.php?src_id=17123 -O nerdtree.zip unzip nerdtree.zip mkdir -p ~/.vim/{plugin,doc} cp plugin/NERD_tree.vim ~/.vim/plugin/ cp doc/NERD_tree.txt ~/.vim/doc/ vim ~/.vimr

递归输出 树状 目录

1 import java.io.File; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 public class IteratorDirDemo { 6 7 public static void main(String[] args) { 8 IteratorUtil.IteratorDir(new File("f:\\KuGou")); 9 } 10 11 } 12 13 class IteratorUtil

14)显示树状目录

1)接着之前的代码 2)最终结果展示: 3)基本步骤: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 // CTree 消息处理程序 2 void CTree::InsertOnePage(HTREEITEM hitem,CString cpath) 3 { 4 5 if(hitem==0||cpath==L"") 6 { 7 return ; 8 } 9 CFileFind cfile; 10 BOOL flag=

JAVA File类 打印目录树状结构图 递归算法

  要实现把制定目录下的所有文件,按照树状结构打印出来的目的. 代码如下: package cn.bjsxt.io; import java.io.File; public class FileTree {        public static void main(String[] args) {                File f=new File("E:/有用的文档"); //假设打印这个目录下的所有文件                printTree(f, 0);

104)PHP,目录树状输出

1 使用特定数量的缩进达到树状目的! 2 核心问题,计算需要缩进的数量! 3 缩进级别,与递归调用深度保持一致.每当执行一级递归操作,所找到的文件的缩进级别+1; 4 语法实现: 5 增加一个参数,表示当前函数调用的深度级别,每当递归+1;

HDU 4455 Substrings --递推+树状数组优化

题意: 给一串数字,给q个查询,每次查询长度为w的所有子串中不同的数字个数之和为多少. 解法:先预处理出D[i]为: 每个值的左边和它相等的值的位置和它的位置的距离,如果左边没有与他相同的,设为n+8(看做无穷). 考虑已知w=k的答案,推w = k+1时,这时每个区间都将增加一个数,即后n-k个数会增加到这些区间中,容易知道,如果区间内有该数,那么个数不会加1,,即D[i] > k时,结果++,即查询后n-k个数有多少个D[i] > k 的数即为要加上的数,然后最后面还会损失一个区间,损失的

树状数组与线段树

一:树状数组 树状数组是对一个数组改变某个元素和求和比较实用的数据结构.两中操作都是O(logn). 需求:有时候我们需要频繁地求数组的前k项和或者求数组从小标i到j的和,这样每次最坏情况下的时间复杂度就会为O(N),这样效率太低了.而树状数组主要就是为了解决这样一个问题.树状数组在求和及修改都可以在O(lgN)时间内完成. 树状数组需要额外维护一个数组,我们设为C[N],原数组为A[N], 其中每个元素C[i]表示A[i-2^k+1]到A[i]的和,这里k是i在二进制时末尾0的个数.注意通过位

lua 如何输出树状结构的table?

为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str = '' indent = indent or '' vmap = vmap or {} --递归结束条件 if (type(value) ~= 'table') then if (type(value) == 'string') then --字符串 str = string.format("[