easyui combotree的使用
前台HTML:
<div class="search-container">
<table class="search-container-table" cellpadding="0" cellspacing="0">
<tr>
<td>统计年份:</td>
<td>
<input type="text" class="input-text" id="year" name="year" onclick="WdatePicker({ dateFmt: 'yyyy', minDate: '1980', maxDate: '2099' })" />
</td>
<td>统计部门:</td>
<td>
<input type="text" name="dept" id="dept" class="easyui-combotree" style="width: 202px; height: 29px; overflow: auto" />
</td>
</tr>
<tr>
<td>检测项目:
</td>
<td>
<input name="testItem" id="testItem" class="easyui-combotree" style="width: 250px; height: 29px;" />
</td>
<td>
<a class="a-btn" href="javascript:void(0);" onclick="loadgrid()">
<img alt="" src="~/Content/images/stat.gif" />
统计
</a>
</td>
</tr>
</table>
</div>
前台JS:
//部门树
$("#dept").combotree({
editable: false,
url: '@Url.Content("~/DetReport/DetReportManage/GetDeptTree")',
onSelect: function (node) {
//加载检测项目
$("#testItem").combotree({
editable: false,
url: '@Url.Content("~/DetReport/YSLReport/GetTestItemTree?deptCode=")' + node.id,
onSelect: function (node) {
//显示全路径
var parent = node;
var tree = $('#testItem').combotree('tree');
var path = new Array();
do {
path.unshift(parent.text);
var parent = tree.tree('getParent', parent.target);
} while (parent);
var pathStr = '';
for (var i = 0; i < path.length; i++) {
pathStr += path[i];
if (i < path.length - 1) {
pathStr += ' - ';
}
}
setTimeout(function () {
$('input[name="testItem"]').prev().val(pathStr);
}, 100);
}
});
}
});
后台代码1:
/// <summary>
/// 获取部门树
/// </summary>
public JsonResult GetDeptTree()
{
List<object> list = new List<object>(); List<SYS_DEPT> deptListAll = m_DeptDal.GetDeptListAll();
foreach (SYS_DEPT dept0 in deptListAll.FindAll(a => string.IsNullOrWhiteSpace(a.PDEPTCODE)))
{
var obj0 = new
{
id = dept0.DEPTCODE,
text = dept0.DEPTNAME,
children = new List<object>()
};
foreach (SYS_DEPT dept1 in deptListAll.FindAll(a => a.PDEPTCODE == dept0.DEPTCODE))
{
var obj1 = new
{
id = dept1.DEPTCODE,
text = dept1.DEPTNAME,
children = new List<object>()
};
foreach (SYS_DEPT dept2 in deptListAll.FindAll(a => a.PDEPTCODE == dept1.DEPTCODE))
{
var obj2 = new
{
id = dept2.DEPTCODE,
text = dept2.DEPTNAME,
children = new List<object>()
};
foreach (SYS_DEPT dept3 in deptListAll.FindAll(a => a.PDEPTCODE == dept2.DEPTCODE))
{
var obj3 = new
{
id = dept3.DEPTCODE,
text = dept3.DEPTNAME,
children = new List<object>()
};
obj2.children.Add(obj3);
}
obj1.children.Add(obj2);
}
obj0.children.Add(obj1);
}
list.Add(obj0);
} return Json(list, JsonRequestBehavior.AllowGet);
}
后台代码2:
/// <summary>
/// 获取检测项目树(统计用)
/// </summary>
public JsonResult GetTestItemTree(string deptCode)
{
List<object> list = new List<object>(); List<SYS_DEPT> deptListAll = m_DeptDal.GetDeptListAll();
List<DETECTIONITEMS> itemListAll = m_DetectionItemsDAL.GetDetectionItemsListAll();
List<SPECIALTY> specialtyListAll = m_SpecialtyDAL.GetSpecialtyListAll();
List<SYS_DEPT> deptList = deptListAll.FindAll(a => a.DEPTCODE.IndexOf(deptCode) == );
if (deptList.Count > )
{
foreach (SPECIALTY specialty in specialtyListAll.FindAll(a => deptList.Exists(b => b.DEPTCODE == a.DEPTCODE)))
{
var specialtyObj = new
{
id = specialty.SPECIALTYID,
text = specialty.SPECIALTYNAME,
leaf = false,
type = , //1专业2样品名称3检测项目
children = new List<object>()
};
foreach (DETECTIONITEMS items in itemListAll.FindAll(a => a.SPECIALTYID == specialty.SPECIALTYID && a.PID == ))
{
List<DETECTIONITEMS> subItemsList = itemListAll.FindAll(a => a.PID == items.DETITEMID);
var itemsObj = new
{
id = items.DETITEMID,
text = items.ITEMNAME,
leaf = subItemsList.Count > ? false : true, //只能选择leaf为true的节点
type = , //1专业2样品名称3检测项目
children = new List<object>()
};
foreach (DETECTIONITEMS subItems in subItemsList)
{
var subItemsObj = new
{
id = subItems.DETITEMID,
text = subItems.ITEMNAME,
leaf = true, //只能选择leaf为true的节点
type = , //1专业2样品名称3检测项目
children = new List<object>()
};
itemsObj.children.Add(subItemsObj);
}
specialtyObj.children.Add(itemsObj);
}
list.Add(specialtyObj);
}
} return Json(list, JsonRequestBehavior.AllowGet);
}
示意图:

easyui combotree的使用的更多相关文章
- EasyUI ComboTree无限层级异步加载示例
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...
- Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径
Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...
- Jquery EasyUI Combotree根据选中的值展开所有父节点
Jquery EasyUI Combotree根据选中的值展开所有父节点 Jquery EasyUI Combotree 展开父节点, Jquery EasyUI Combotree根据子节点选中的 ...
- Jquery EasyUI Combotree 初始化赋值
Jquery EasyUI Combotree 初始化赋值 ================================ ©Copyright 蕃薯耀 2018年5月7日 https://www. ...
- Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...
- easyui combotree不让父级选中
easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#comb ...
- 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树
EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...
- easyui combotree 异步树 前端写法js
简要说下使用场景: combotree下拉框第一次加载时,请求一个接口,页面上展示顶层节点们(可以理解为最顶层的节点,比如所有的一级公司): 当点击其中一个节点前面的小三角展开时,再次请求服务器接口( ...
- EasyUI Combotree只选择叶子节点
EasyUI Combotree的方法拓展自Combo和Tree.而Tree有一个onBeforSelect事件来帮助我们实现只选择叶子节点的功能. Tree事件需要 'node' 参数,它包括下列属 ...
- easyui combotree下拉框多选赋值
发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...
随机推荐
- Android Support Library
title: Android Support Library tags: Support Library,支持库 grammar_cjkRuby: true --- DATE: 2016-5-13. ...
- 解读ASP.NET 5 & MVC6系列(2):初识项目
初识项目 打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下: 我们可以看到,此时Web ...
- Logging with Log4net (二)
log4net 是.net 的一款日志记录框架. 它提供了很多的方法来帮助记录日志: 使用起来也比较方便: 选中项目,点击右键,然后选择 Manage NuGet Packages... 安装log4 ...
- ABP理论学习之缓存Caching
返回总目录 本篇目录 介绍 ICacheManager ICache ITypedCache 配置 介绍 ABP提供了缓存的抽象,它内部使用了这个缓存抽象.虽然默认的实现使用了MemoryCache, ...
- 微软CMS项目 Orchard 所用到的开源项目
研发了Orchard一年左右了,时常遇到瓶颈,总觉得力不从心,其实并不是基础不够,关键还是概念性的东西太多,一会儿这个概念名词,一会那个,关于Orchard的技术文档也的确很少,每次看起来总是焦头烂额 ...
- Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)
先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识. Webgl是一个html标准,他要在canvas元素上初始化. Html页面上的准备 所以我们先从html页面开始看 ...
- alias指令:设置命令别名
alias: usage: alias [-p] [name[=value] ... ] 1. 语法 alias [参数][命令别名]=[原命令名称] 2. 功能介绍 该指令主要用于为原命令 ...
- 我所理解的RESTful Web API [Web标准篇]
REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...
- Go语言实战 - revel框架教程之用户注册
用户注册.登录和注销是任何一个网站都必然会有的功能,可以说,这是重新造轮子做多的领域,每个做网站的人应该都做过很多遍.见微知著,从这么一个小功能其实就可以看到所使用的web框架中的大部分东西. 今天就 ...
- 读书笔记-you-don't-konw-js
第一部分:作用域和闭包 不要满足于只是让代码正常工作,而是弄清楚为什么是这样 作用域是什么 定义的变量存储在哪里?程序是如何找到变量的?实现的 规则就是作用域 传统编译语言执行前的编译三步骤(p5) ...