`

封装一个树形菜单二——JS渲染树

阅读更多

Part1:Get a tree widget

Here are many useful tree widgets :http://www.ajaxline.com/best-javascript-tree-widgets

 

I chose the one which is easiest to use ---- dtree, through which I can create a powful tree by just importing the given dtree.js file.

 

Here is the official website of dtree and you can find api and examples:

http://destroydrop.com/javascripts/tree/

 

 添加一个节点,可以指定该节点跳转的URL,例子中没有写点击后,怎么执行一个js事件,补充一下:

 

//跳转到example01.html页面
d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');

//执行alert
d.add(11,9,'Mom\'s birthday','javascript:alert(\'bb\')');

 

这里javascript里面只能写单引号,再转意,因为dtree.js文件中用了双引号,如果写成javascript:alert(" bb" ),是搞不定的。

 

 

Part2:Write an ASP widget to get the data from webserver and pass them to dtree.

see the workout ~

 

First,write an asp page to allow the tree to be showed when certain button is clicked.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="dtree.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:button Text="click" OnClick="AddBtn_Click" runat="server" />
    </div>
    </form>
</body>
</html>

 Second, the cs file to fulfill the AddBtn_Click event, which would fetch the data from the web server and draw the proper tree with the help of dtree js.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.Origin.Base.test.mywork.Tree;
public partial class tree_Default : System.Web.UI.Page
{
    private ITreeReaderFactory factory = new XMLTreeRreaderFactory(@"D:\\menu.xml");
    protected void Page_Load(object sender, EventArgs e)
    {
       

    }
    public ITreeNode fetchRoot()
    {
        ITreeNode root = null;
        ITreeReader reader = factory.createTreeReader();
        root = reader.createTree();
        return root;
    }
    public void AddBtn_Click(object sender, EventArgs e) 
    {

        string rootName = (string)fetchRoot().getAttribute("name");
        string str = "";
        str += "<script type='text/javascript' src='dtree.js'></script>";
        str += "<script type='text/javascript'>";
        str += " d = new dTree('d');";

        ITreeNode root = fetchRoot();

        //把树转换为dtree的格式
        str += convertToDTree(root, null);
       

        //str += "d.add('用户管理',-1,'My example tree');";
        //str += "d.add('创建用户','用户管理','My example tree');";
        ////str += "d.add('创建员工','创建用户','创建员工');";
        ////str += "d.add('创建客户','创建用户,'创建客户');";
    

        str += "document.write(d);";

        str += "</script>";
        
        Response.Write(str);
    }
    public static string convertToDTree(ITreeNode root, string parent)
    {
        string name = (string)root.getAttribute("name");
        string url = (string)root.getAttribute("url");
        string add = "";
        if (parent == null)
        {
            add = "d.add('" + name + "',-1,'" + name + "');";
        }
        else
        {
            add = "d.add('" + name + "','" + parent + "','" + name + "');";
        }

        IList<ITreeNode> subNodes = root.getSubNodes();
        if (subNodes == null)
        {
            return add;
        }
        else
        {
            for (int i = 0; i < subNodes.Count; i++)
            {
                ITreeNode node = subNodes[i];
                add += convertToDTree(node, name);
            }
        }
        return add;
    }

}

 

OK~ the function is ...potboiled . Because there are many flaws and hard to be used. Next time I will make it widget and the path of the XML will not be hard coded any more. Also allow users to decide the words to math the key of name , url and so on. In conclusion , I will try to make the hard codes not be hard in the next version.

 

分享到:
评论

相关推荐

    封装一个树形菜单一——类设计

    标题“封装一个树形菜单一——类设计”指的是创建一个数据结构来表示树形菜单,这在很多应用程序,如图形用户界面(GUI)或者命令行接口(CLI)中非常常见。这类菜单允许用户通过层级结构选择操作。下面我们将深入...

    (推荐)超级漂亮的JS树形菜单

    从压缩包子文件的文件名称列表"js树形菜单"来看,很可能包含了一个或多个JavaScript文件,这些文件可能是实现树形菜单的核心代码。开发者可以通过引入这些文件到HTML页面中,然后调用提供的函数和方法来创建和控制树...

    封装的dTree.js文件动态创建树形菜单

    dTree.js是一个轻量级的JavaScript库,专门用于构建交互式的树形菜单。它提供了丰富的API和配置选项,使得开发者能够方便地自定义树形菜单的样式、行为以及数据来源。以下我们将逐步介绍如何在项目中使用dTree.js。 ...

    js树形菜单,完全兼容

    综上所述,实现一个在各种浏览器下兼容的JavaScript树形菜单需要考虑面向对象的设计、浏览器特性的适配、HTML/CSS布局以及事件处理等多个方面。通过合理的代码组织和优化,可以在不同环境下提供一致且高效的用户体验...

    js+jsp树形菜单

    总之,"js+jsp树形菜单"是一个融合了前端与后端技术的实践,它展示了如何利用JavaScript和JSP协同工作,为用户提供交互性强、数据驱动的菜单界面。理解并掌握这一技术,对于Web开发者来说是非常有价值的。

    基于ztree封装的Vue树形组件,轻松实现海量数据的高性能渲染.zip

    "基于ztree封装的Vue树形组件,轻松实现海量数据的高性能渲染"这个项目,就是针对这一需求,将经典的zTree库与Vue.js相结合,为开发者提供了一个强大且高效的解决方案。 zTree是一个基于JavaScript的开源树形插件,...

    很不错的树形菜单(javascript+css)

    6. `js`:这个目录很可能包含了实现树形菜单功能的JavaScript代码,比如一个名为`tree.js`的文件,里面可能封装了菜单操作的逻辑。 通过这些文件,开发者可以学习到如何利用JavaScript和CSS来构建可交互的树形菜单...

    可以实现多级的树形菜单的js

    可以将树形菜单的逻辑封装为一个独立的组件,允许其他部分的代码轻松调用和配置。 在提供的压缩包文件"树形结构"中,可能包含了实现这些功能的JavaScript源代码,包括数据结构、DOM操作、事件处理、CSS样式等。通过...

    jquery拖拽树形菜单

    本文将详细讲解如何利用jQuery实现拖拽功能,并将其应用于树形菜单,帮助你创建交互性强、用户体验良好的Web应用。 一、jQuery基础 jQuery的核心理念是“Write Less, Do More”,通过封装JavaScript的常用功能,使...

    Struts 2项目 ajax动态生成树形菜单

    1. **数据库设计**:设计一个表来存储树形菜单的数据,例如:`menu_id`, `parent_id`, `menu_name`, `menu_url`等字段,其中`parent_id`用于表示菜单项的层级关系。 2. **Action类**:创建一个Struts2 Action类,...

    struts简单示例+js树形菜单

    - **交互处理**:当用户在树形菜单中选择一个节点时,JS可能发送AJAX请求到服务器,Struts Action接收到请求后进行相应处理,例如加载新的数据或执行特定操作。 5. **示例应用**: - 可能是一个简单的文件管理...

    常用的三种树形菜单->很实用的

    开发者只需要维护一个包含层级关系的数据结构,框架会自动渲染成相应的UI。例如,React中有许多成熟的组件库(如Ant Design、Material-UI等)提供了封装好的Tree组件,只需传入数据即可构建功能完善的树形菜单,同时...

    树形菜单.rar

    这个“树形菜单.rar”文件包含了一个使用纯HTML和JavaScript实现的树形菜单实例,对于学习前端开发或者需要在项目中应用树形菜单的开发者来说非常有价值。 首先,我们来详细了解HTML5在构建树形菜单中的作用。HTML5...

    JQ树形菜单代码

    - `js`:存放JavaScript文件,其中可能有一个名为`tree.js`的文件,里面包含了实现树形菜单的jQuery代码。 - `css`:存放CSS样式文件,如`style.css`,用于定义菜单的样式,包括颜色、字体、布局等。 五、优化与...

    jquery 树形菜单

    在提供的压缩包中,有一个名为`css`的目录,很可能包含了用于美化树形菜单的样式文件。通常,我们会定义`&lt;li&gt;`元素的缩进、悬停效果,以及展开/折叠的图标等。 另外,`images`目录可能包含了图标图片,如展开箭头等...

    jquery树形菜单

    jQuery,一个广泛使用的JavaScript库,提供了丰富的功能来创建交互式的树形菜单。本篇文章将深入探讨如何使用jQuery实现多级、可折叠的树形分类菜单,并提供相关的代码演示资源。 首先,我们来看`index.html`,这是...

    JS和CSS技术相结合做成的树形菜单

    本项目利用这两者的结合,创建了一个美观且功能丰富的树形菜单。下面我们将深入探讨这个话题,了解如何通过JS和CSS实现树形菜单及其相关知识点。 1. **树形菜单的概念** 树形菜单是一种层次结构的展示方式,它模拟...

    树形菜单示例(tree)

    在本案例中,"树形菜单示例(tree)"是一个个人编写的示例,用于个人备忘,虽然不推荐下载,但我们可以从这个主题中探讨树形菜单的基本概念、实现方式以及相关的技术知识。 1. **树形菜单的概念** 树形菜单是通过...

    基于vue开发的树形菜单

    本项目就是这样一个专门基于Vue.js封装的树形菜单组件。 首先,我们来看"基于vue开发的树形菜单"这个标题所涵盖的知识点。Vue.js是一个渐进式JavaScript框架,它的核心库专注于视图层,易于与其他库或已有项目整合...

Global site tag (gtag.js) - Google Analytics