easyui学习记录:combotree的使用

一、简介:

  combotree控件是对combo(自定义下拉框)与tree(树)控件的扩展,它与combobox(下拉列表框)类似,但是它将下拉列表框的列表替换成了树。该控件支持树状态的复选框从而实现多选。

1、属性

树形下拉框的属性扩展自combo与tree,其重写的属性如下:

属性名 属性值类型 描述 默认值
editable boolean 定义用户是否可以直接输入文本到字段中。 false

2、方法

树形下拉框的方法扩展自combo(自定义下拉框),其重写和新增的方法如下:

方法名 方法参数 描述
options none 返回属性对象。
tree none 返回树形对象。以下的例子显示了如何得到选择的树节点。

var t = $(‘#cc‘).combotree(‘tree‘);	// 获取树对象
var n = t.tree(‘getSelected‘);		// 获取选择的节点
alert(n.text);
loadData data 读取本地树形数据。

代码示例:

$(‘#cc‘).combotree(‘loadData‘, [{
	id: 1,
	text: ‘Languages‘,
	children: [{
		id: 11,
		text: ‘Java‘
	},{
		id: 12,
		text: ‘C++‘
	}]
}]);
reload url 再次请求远程树数据。通过‘url‘参数重写原始URL值。
clear none 清空控件的值。
setValues values 设置组件值数组。

代码示例:

$(‘#cc‘).combotree(‘setValues‘, [1,3,21]);
setValue value 设置组件值。

代码示例:

$(‘#cc‘).combotree(‘setValue‘, 6);

3、事件

该控件的事件完全继承自combo与tree.

二、用法

该控件有两种创建的方式:通过标签的方式创建以及通过javascript编程的方式创建,在下面的例子中着重以编程的方式实现。

html代码:

<input id="ProjectTree"  style="width: 300px;" />

  

1、本地数据源的加载

通过继承自tree的"data"属性来实现:

$("#ProjectTree").combotree({
                data: [{
                    text: ‘Item1‘,
                    state: ‘closed‘,
                    children: [{
                        text: ‘Item11‘
                    }, {
                        text: ‘Item12‘
                    }]
                }, {
                    text: ‘Item2‘
                }]
            });

效果图:

通过方法“loadData”实现:

HTML代码:

<input id="ProjectTree" class="easyui-combotree"  style="width: 300px;" />

js代码:

$("#ProjectTree").combotree("loaddata", [{
                text: ‘Item1‘,
                state: ‘closed‘,
                children: [{
                    text: ‘Item11‘
                }, {
                    text: ‘Item12‘
                }]
            }, {
                text: ‘Item2‘
            }]);

2、异步加载数据

在介绍异步加载数据之前,先讲解一下数据源的格式。其格式为json,每个节点都具备一下属性:

  • id:节点ID,对加载远程数据很重要。
  • text:显示节点文本。
  • state:节点状态,‘open‘ 或 ‘closed‘,默认:‘open‘。如果为‘closed‘的时候,将不自动展开该节点。
  • checked:表示该节点是否被选中。
  • attributes: 被添加到节点的自定义属性。
  • children: 一个节点数组声明了若干节点。

数据源格式举例:

[{
    "id":1,
    "text":"Folder1",
    "iconCls":"icon-save",
    "children":[{
        "text":"File1",
        "checked":true
    },{
        "text":"Books",
        "state":"open",
        "attributes":{
            "url":"/demo/book/abc",
            "price":100
        },
        "children":[{
            "text":"PhotoShop",
            "checked":true
        },{
            "id": 8,
            "text":"Sub Bookds",
            "state":"closed"
        }]
    }]
},{
    "text":"Languages",
    "state":"closed",
    "children":[{
        "text":"Java"
    },{
        "text":"C#"
    }]
}]

异步加载数据举例:

前端js代码:

 //构造项目树
            $("#ProjectTree").combotree({
                url: "Ajax.ashx",
                valueField: "id",
                textField: "text",
                lines: true,
                queryParams: {
                    ParamType: "Init",
                    Action: "GetProjectTree",
                    M: Math.random()
                },
                onBeforeSelect: function (node) {
                    debugger;
                    if (!$(this).tree(‘isLeaf‘, node.target)) {
                        $(this).combo("showPanel");
                        return false;
                    }                 

                }

            });

在这里我是通过一般处理程序来接受传递到后台的参数然后进行一系列的逻辑处理生成一个json。

三、在实现过程中遇到的问题以及解决方法记录

1、json的格式

2、C#中引号的嵌套

3、如何生成combotree的数据源

3、combotree如何实现只允许选择叶子节点

四、总结

不积跬步、无以至千里!

  

  

时间: 2024-10-13 09:22:25

easyui学习记录:combotree的使用的相关文章

easyui学习记录:accordion(分类)的使用

转自:MyPersistence      http://www.cnblogs.com/YanYongSong/p/5130243.html 一.前言: 在开发一个后台管理系统时,为了实现菜单导航功能,在网上搜索下,觉得easyui 的accordion 控件实现的效果还可以所有就用上了,在这里记录一下该控件的基本使用方法. 分类控件(accordion)允许使用多面板,每个面板都内建支持展开和折叠功能.点击一个面板的标题将会展开或折叠面板主体.可以通过面板指定的'href'属性使用ajax方

JQuery EasyUI学习记录(四)

1.EasyUI中的validatebox使用 提供的校验规则: 1.非空校验required="required" 2.使用validType指定 email: 正则表达式匹配电子邮件规则. url: 正则表达式匹配的URL规则. length[0,100]: 在x和x字符允许. remote['http://.../action.do','paramName']: 发送ajax请求做验证值,返回"true"当成功. <table cellpadding=3

EasyUI学习总结(三)——easyloader源码分析

EasyUI学习总结(三)--easyloader源码分析 easyloader模块是用来加载jquery easyui的js和css文件的,而且它可以分析模块的依赖关系,先加载依赖项.模块加载好了会调用parse模块来解析页面.把class是easyui开头的标签都转化成easyui的控件. 先看Demo1例子,再分析源代码. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>easyloader范例</tit

EasyUI学习总结(二)——easyloader分析与使用

EasyUI学习总结(二)--easyloader分析与使用 使用脚本库总要加载一大堆的样式表和脚本文件,在easyui 中,除了可以使用通常的方式加载之外,还提供了使用 easyloader 加载的方式.这个组件主要是为了按需加载组件而诞生.什么情况下使用它呢? 你觉得一次性导入 easyui 的核心 min js 和 css 太大 你只用到 easyui 的其中几个组件 你想使用其中的一个组件,但是你又不知道这个组件依赖了那些组件. 如果你有以上三中情况,那么推荐你使用easyLoader.

EasyUI学习总结(四)——parser源码分析

EasyUI学习总结(四)--parser源码分析 parser模块是easyloader第一个加载的模块,它的主要作用,就是扫描页面上easyui开头的class标签,然后初始化成easyui控件. 1 /** 2 * parser模块主要是解析页面中easyui的控件 3 */ 4 $.parser = { 5 // 是否自动解析 6 auto: true, 7 8 // 可以被解析的控件 9 plugins:['linkbutton','menu','menubutton','splitb

easyui学习笔记2—在行内进行表格的增删改操作【转载】

第一篇笔记中记录了如何实现表格的增删改,那个是点击之后跳出来一个对话框然后进行的,这里是在表格本身上进行的操作,也很简单,但是这里发现一个版本问题,也可以说是兼容性问题. 1.首先我们看引用的js和css代码 <link rel="stylesheet" href="jquery-easyui-1.3.5/themes/default/easyui.css" /> <link rel="stylesheet" href=&quo

mvc Bundling 学习记录

因为现在的项目JS引用很多,无意中看到了MVC4的Bundling,开始的时候感觉很不错,将所有的CSS,js文件压缩成一个文件处理,画面调用也很简单 于是,花了一个下午的时候研究了一下,并且通过各种情况进行测试 可是结果不尽如人意,其中有一个比较很让人抓狂的问题 经常做.NET的人都知道,UI画面会引用很多的插件,比如easyui,ext等等,而这些插件里面包含了很多图片引用,因为图片呢,就涉及到一个做WEB的常见难题:路径(当然,如果所有的CSS文件中图片路径都是使用的绝对路径或者项目绝对路

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac