EasyUI ComboTree 递归绑定详解

html代码:
 <input id="Series" name="Series" class="easyui-combotree"  method=‘get‘/> 
js代码:

$(document).ready(function () {
 $(‘#Series‘).combotree({
        //需要返回的json格式
        //data: [
        //    {
        //        "id": "222", "text": "黑色系列",
        //        "children": [
        //            { "id": "280", "text": "黑1"},
        //            { "id": "282", "text": "黑2"}
        //        ]
        //    },
        //    {
        //        "id": "225", "text": "白色系列",
        //        "children": [{ "id": "281", "text": "白1" },
        //            { "id": "283", "text": "白2" }
        //        ]
        //    }],
        //请求数据的一般处理程序的路径
        url: getRootPath() + ‘/handler/Page/Product/ProductClassify.ashx?action=MList‘,
        multiple: false,//是否有多选框
        lines: true//选项前是否显示虚线
    });
});    

一般处理程序:
<%@ WebHandler Language="C#" Class="ProductClassify" %>

using System;
using System.Web;
using System.Data;
using System.Text;
using System.Web.Script.Serialization;

public class ProductClassify : IHttpHandler {
    HttpContext Context = null;
    JiaSoft.BLL.Classify_BLL PClassiyList = new JiaSoft.BLL.Classify_BLL();
    public void ProcessRequest (HttpContext context) {
        Context = context;
        string action = context.Request["action"].ToString();
        responseAction(action);
    }
    private void responseAction(string action)
    {
       if (action.Equals("MList"))  //获得多级列表
        {
            InitComboTree(Context, PClassiyList);

        }
    }
    //初始化ComboTree数据
    public void InitComboTree(HttpContext context, JiaSoft.BLL.Classify_BLL PClassiyList)
    {
            DataTable dt;
            System.Text.StringBuilder sb = new System.Text.StringBuilder();        //数据库设计名称、id、父类id 初始化先获取父类id=0的数据集,返回数据是DataTable类型
            dt = PClassiyList.GetList("  Mtype=102 and ParentID=0 ").Tables[0];
            string sbs =string.Empty;
            if (dt == null)
            {
                sbs= "[]";
            }
            StringBuilder builder = new StringBuilder();
            builder.Append("[");
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    builder.Append("{");

                    builder.Append("\"id\":" + new JavaScriptSerializer().Serialize(dt.Rows[i]["ClassifyID"].ToString()));
                    builder.Append(",");
                    builder.Append("\"text\":" + new JavaScriptSerializer().Serialize(dt.Rows[i]["CodeName"].ToString()));
                    builder.Append(",");            //调用递归方法
                    builder = InitChild(builder, dt.Rows[i]["ClassifyID"].ToString(), PClassiyList);
                    builder.Append("}");
                    if (i < (dt.Rows.Count - 1))
                    {
                        builder.Append(",");
                    }
                }
            }
            builder.Append("]");
            sbs = builder.ToString();
            Context.Response.Write(sbs);
    }
    //递归子类
    public StringBuilder InitChild(StringBuilder builder, string parentID, JiaSoft.BLL.Classify_BLL PClassiyList)
    {
        DataTable dt = PClassiyList.GetList("  Mtype=102 and ParentID=" + parentID ).Tables[0];
        if (dt == null)
        {
            builder.Append("");
        }
        builder.Append("\"children\":[");
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                builder.Append("{");

                builder.Append("\"id\":" + new JavaScriptSerializer().Serialize(dt.Rows[i]["ClassifyID"].ToString()));
                builder.Append(",");
                builder.Append("\"text\":" + new JavaScriptSerializer().Serialize(dt.Rows[i]["CodeName"].ToString()));
                builder.Append(",");
                builder = InitChild(builder, dt.Rows[i]["ClassifyID"].ToString(), PClassiyList);
                builder.Append("}");
                if (i < (dt.Rows.Count - 1))
                {
                    builder.Append(",");
                }
            }
        }
        builder.Append("]");
        return builder;
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

}

效果图:

 
时间: 2024-09-30 23:27:45

EasyUI ComboTree 递归绑定详解的相关文章

PHP类与对象,构造函数和析构函数,加上this绑定详解

一.类与对象 不仅在PHP中,在所有面向对象程序设计语言中,类都是抽象的,对象是类的一个实例.所有抽象就是:"抽取出相像的". 在生活中,人是一个类,抽出相像的是:人都有五官,头发,手脚,会吃饭睡觉等等. 看一下PHP中的类与对象代码的实现 <?php class Person{ //定义一个叫Person的类 public $name; //声明共有的属性:名字 public function say(){ //声明共有的方法:说话 echo 'saying'; } } ?&g

递归实例详解

C通过运行时堆栈支持递归函数的实现.递归函数就是直接或间接调用自身的函数.许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的<C语言程序设计>一书中就是从阶乘的计算开始的函数递归.导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归.但是在阶乘的计算里,递归并没有提供任何优越之处.在菲波那契数列中,它的效率更是低的非常恐怖. 这里有一个简单的程序,可用于说明递归.程序的目的是把一个整数从二进制形式转换为可打印的字符形式.例如:给出一个值4267,我们需要

二叉树的先序遍历(递归方式)详解

/* * 时间:2015年5月4日09:58:21 * 目的:实现二叉树的先序遍历递归. * 总结和思考!二叉树一般使用链式存储结构 * 如果使用顺序存储方式,除非二叉树是完全二叉树或者满二叉树 * 否则会浪费很多内存空间! */ # include <stdio.h> typedef struct Node{ char data; //数据元素 Node *LChild; //左孩子节点 Node *RChild; //右孩子节点 }BTree; /*递归算法--先序遍历*/ //二叉树的创

搭建主从DNS服务器及重要传送和递归属性详解

1.allow-recursion 主要功能是允许哪些主机递归查询,以免DNS服务器挂机或浪费网络资源 例如:仅允许1.1.1.0/24网段内的主机递归DNS查询,其他主机一律不许递归 allow-recursion { 1.1.1.0/24; }; 2.allow-transfer,仅对从服务器进行区域数据传送,否则安全风险 例如:仅对1.1.1.19这台从DNS服务器进行区域数据传送 allow-transfer { 1.1.1.19; }; 3.背景:搭建主从DNS服务器,要求如下: a.

域名绑定详解

其实所谓的域名绑定,就是通过命令的形式,简易创建一个conf文件到/usr/local/nginx/conf/vhost下面,这个过程完全可以手工创建conf,或者,平时修改目录.域名等,直接修改conf文件,效果完全一样: /root/vhost.sh #lnmp域名绑定命令 ========================================================================= Add Virtual Host for LNMP V0.9  ,  W

easyUI同步树的详解

简介树控件 树控件,很常用,比如它可以做有层级的菜单.比如公司的部分划分.省市区的选择... 最大的好处就是有层级关系,看起来和选择起来都比较清晰,就像一串杂乱无章的json你用bejson去格式化一样的感觉. 所以,掌握树控件,是很有必要的,为什么?因为它很有用,用的恰当,也可以适当提升用户体验, 树的两种加载方式 tree的加载方式分为常规加载和异步加载两种,其中常规加载也就是一次性把整棵树都加载出来,而异步加载呢就是当展开父节点的时候才会去加载子节点. 一般肉眼上可以观察到异步加载的树在点

Chapter 4 递归式详解

leetcode之反转链表图文详解

206-反转链表 题目: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路: 迭代法: 新建一个链表的头部,循环遍历旧链表的结点,将其加到新链表的后面 递归法 代码:(迭代法) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; *

【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主