一、前言:

  组合树(combotree)把选择控件和下拉树结合起来。它与组合框(combobox)相似,不同的是把列表替换成树组件。组合树(combotree)支持带有用于多选的树状态复选框的树。

二、使用实例

1、创建方式

  easyui 中的控件一般有两种创建方式:通过标签的方式以及js编程的方式。

1.1 标签的方式创建:

<select id="cc" class="easyui-combotree" style="width:200px;"
data-options="url:'get_data.php',required:true">
</select>

1.2 使用 javascript 创建组合树(combotree)

1.2.1 本地数据源的加载

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

<input id="ProjectTree"  style="width: 300px;" />
$("#ProjectTree").combotree({
data: [{
text: 'Item1',
state: 'closed',
children: [{
text: 'Item11'
}, {
text: 'Item12'
}]
}, {
text: 'Item2'
}]
});

效果图:

通过方法“loadData”实现:

<input id="ProjectTree" class="easyui-combotree"  style="width: 300px;" />
$("#ProjectTree").combotree("loaddata", [{
text: 'Item1',
state: 'closed',
children: [{
text: 'Item11'
}, {
text: 'Item12'
}]
}, {
text: 'Item2'
}]);

1.2.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;
} } });

1.2.2.1 在实现过程中遇到的问题以及解决方法

1、json的格式

http://baike.baidu.com/link?url=-NLPp39k0VtBHuPU0yER_K06ek_yTVzzXTzC05GwBuiAtIb-9HE7Ufgn85MbrjBXaeKUtxl_MnOPmumpv8n34q

2、C#中引号的嵌套

通过转义字符来实现:\"

3、如何生成combotree的数据源

  通过递归的算法来实现,直接上代码:

/// <summary>
/// 构造项目树
/// </summary>
/// <returns>返回Json格式的字符串</returns>
public string GetProjectTree()
{
string Jsonstring = "[";
DataTable dt = GetPorjectNodeById(); foreach(DataRow dr in dt.Rows)
{
if(dr!=dt.Rows[dt.Rows.Count-])//如果此时不是最后一行数据
{
Jsonstring +='{'+ GetProjJson(dr)+'}'+','; }
else
{
//string a = GetProjJson(dr);
Jsonstring +='{'+ GetProjJson(dr)+'}';
}
} return Jsonstring+="]";
} /// <summary>
/// 获取根节点或某个父节点的子节点
/// </summary>
/// <param name="Parent_id"></param>
/// <returns></returns>
public DataTable GetPorjectNodeById(int Parent_id)
{ SqlParameter[] Sqlpara = new SqlParameter[] {
new SqlParameter("@Parent_id",Parent_id)
}; return db.ExecuteDataTable("P_GetProjectInfr",Sqlpara); } /// <summary>
/// 获取根节点的子节点
/// </summary>
/// <param name="dr"></param>
/// <returns>返回json格式的字符串</returns>
public string GetProjJson(DataRow dr)
{
string ProjectJson = ""; ProjectJson = "\"id\":" + dr["type_sid"]
+ ",\"text\":\"" + dr["Name"]
+ "\",\"children\":"; DataTable dt = GetPorjectNodeById(int.Parse(dr["type_sid"].ToString())); if (dt.Rows.Count != )
{
ProjectJson += "["; foreach(DataRow d in dt.Rows)
{
if(d!=dt.Rows[dt.Rows.Count-])
{
ProjectJson +="{"+GetProjJson(d)+"}"+",";
}
else
{
ProjectJson +="{"+GetProjJson(d)+"}";
} }
ProjectJson += "]"; }
else {
ProjectJson += "null";
} return ProjectJson; }

2. combotree如何实现只允许选择叶子节点

3、下面对相关的属性、方法进行记录说明

3.1 属性

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

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

3.2 事件

该事件扩展自组合(combo)和树(tree)

3.3 方法

该方法扩展自组合(combo),下面是为组合树(combotree)添加或重写的方法。

名称 参数 描述
options none 返回选项(options)对象。
tree none 返回树(tree)对象。下面的实例演示如何取得选中的树节点。
  1. var t = $('#cc').combotree('tree'); // get the tree object
  2. var n = t.tree('getSelected'); // get selected node
  3. alert(n.text);
loadData data 记住本地的树(tree)数据。
代码实例:
  1. $('#cc').combotree('loadData', [{
  2. id: 1,
  3. text: 'Languages',
  4. children: [{
  5. id: 11,
  6. text: 'Java'
  7. },{
  8. id: 12,
  9. text: 'C++'
  10. }]
  11. }]);
reload url 再一次请求远程的树(tree)数据。传 'url' 参数来重写原始的 URL 值。
clear none 清除组件的值。
setValues values 设置组件值的数组。
代码实例:
  1. $('#cc').combotree('setValues', [1,3,21]);
setValue value 设置组件的值。
代码实例:
  1. $('#cc').combotree('setValue', 6);

combotree(组合树)的使用的更多相关文章

  1. 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树

    EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...

  2. Jquery UI 组合树 - ComboTree 集成Wabacus4.1 代码剖析

    Jquery UI 1.3 (组合树 - ComboTree ) 集成Wabacus4.1 集成Spring 代码剖析 使用时,请下载需要Jquery ui包进行配置 combotree.js 的代码 ...

  3. EasyUI组合树插件

    一.引用CSS和JS <link href="~js/easyui/easyui.css" rel="stylesheet" type="tex ...

  4. HDUOJ-----2838Cow Sorting(组合树状数组)

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. easyUI带复选框的组合树

    代码: <input id="depts"><script type="text/javascript">$(document).rea ...

  6. easyUI的combotree的树的懒加载。

    var tree=[{    "id":1,    "text":"My Documents",    "children&quo ...

  7. easyui combotree 异步树 前端写法js

    简要说下使用场景: combotree下拉框第一次加载时,请求一个接口,页面上展示顶层节点们(可以理解为最顶层的节点,比如所有的一级公司): 当点击其中一个节点前面的小三角展开时,再次请求服务器接口( ...

  8. JQuery Easy Ui (Tree树)详解(转)

    第一讲:JQuery Easy Ui到底是什么呢? 首先咱们知道JQuery是对Java Script的封装,是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等.. JQuery ui是在j ...

  9. jQueryEasyUI

    jQueryEasyUI 编辑 jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者 ...

随机推荐

  1. ubuuntu截图

    方法1: 按 print screen sysrq 方法2: 系统设置 选择键盘 选择快捷键窗口 选择截图 按照自己的习惯更改快捷键即可.

  2. .h头文件 .lib库文件 .dll动态链接库文件关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  3. ubuntu 下的ftp详细配置

    FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警 ...

  4. 如何使用 idea提交svn代码

    链接:https://jingyan.baidu.com/article/b2c186c80d81b1c46ff6ff59.html

  5. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  6. python map、join函数

    map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. map(fun ...

  7. 【Vue常用指令】

    目录 v-html v-text v-for v-if v-show v-bind v-on v-model 指令修饰符 计算与侦听属性 自定义属性 获取DOM元素 "@ *** Vue.j ...

  8. jmeter实现SMTP邮件协议压测

    实现目的 通过jmeter的SMTP取样器,调用SMTP协议,批量进行邮件的发送,已达到压测的目的. 脚本实现 User Defined Variables定义用户变量 编辑SMTP Sampler取 ...

  9. 基于Robot Framework的接口自动化测试

    Robot Framework框架简介 Robot Framework框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法.它本身拥有强大的标准库,此外 ...

  10. IIS-7.5 第一次加载慢的 解决办法

    问题焦点 Win2008R2,Win7 下面IIS部署的.NET站点第一次加载比较慢. 解决办法: 1.基本原理: 在第一个请求到达之前加载Web应用程序,从而提高其网站的响应性.通过主动加载和初始化 ...