前台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的使用的更多相关文章

  1. EasyUI ComboTree无限层级异步加载示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...

  2. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...

  3. Jquery EasyUI Combotree根据选中的值展开所有父节点

    Jquery EasyUI Combotree根据选中的值展开所有父节点  Jquery EasyUI Combotree 展开父节点, Jquery EasyUI Combotree根据子节点选中的 ...

  4. Jquery EasyUI Combotree 初始化赋值

    Jquery EasyUI Combotree 初始化赋值 ================================ ©Copyright 蕃薯耀 2018年5月7日 https://www. ...

  5. Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框

    Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...

  6. easyui combotree不让父级选中

    easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#comb ...

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

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

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

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

  9. EasyUI Combotree只选择叶子节点

    EasyUI Combotree的方法拓展自Combo和Tree.而Tree有一个onBeforSelect事件来帮助我们实现只选择叶子节点的功能. Tree事件需要 'node' 参数,它包括下列属 ...

  10. easyui combotree下拉框多选赋值

    发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...

随机推荐

  1. Android Support Library

    title: Android Support Library tags: Support Library,支持库 grammar_cjkRuby: true --- DATE: 2016-5-13. ...

  2. 解读ASP.NET 5 & MVC6系列(2):初识项目

    初识项目 打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下: 我们可以看到,此时Web ...

  3. Logging with Log4net (二)

    log4net 是.net 的一款日志记录框架. 它提供了很多的方法来帮助记录日志: 使用起来也比较方便: 选中项目,点击右键,然后选择 Manage NuGet Packages... 安装log4 ...

  4. ABP理论学习之缓存Caching

    返回总目录 本篇目录 介绍 ICacheManager ICache ITypedCache 配置 介绍 ABP提供了缓存的抽象,它内部使用了这个缓存抽象.虽然默认的实现使用了MemoryCache, ...

  5. 微软CMS项目 Orchard 所用到的开源项目

    研发了Orchard一年左右了,时常遇到瓶颈,总觉得力不从心,其实并不是基础不够,关键还是概念性的东西太多,一会儿这个概念名词,一会那个,关于Orchard的技术文档也的确很少,每次看起来总是焦头烂额 ...

  6. Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)

    先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识. Webgl是一个html标准,他要在canvas元素上初始化. Html页面上的准备 所以我们先从html页面开始看 ...

  7. alias指令:设置命令别名

    alias: usage: alias [-p] [name[=value] ... ] 1. 语法    alias [参数][命令别名]=[原命令名称]   2. 功能介绍 该指令主要用于为原命令 ...

  8. 我所理解的RESTful Web API [Web标准篇]

    REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...

  9. Go语言实战 - revel框架教程之用户注册

    用户注册.登录和注销是任何一个网站都必然会有的功能,可以说,这是重新造轮子做多的领域,每个做网站的人应该都做过很多遍.见微知著,从这么一个小功能其实就可以看到所使用的web框架中的大部分东西. 今天就 ...

  10. 读书笔记-you-don't-konw-js

    第一部分:作用域和闭包 不要满足于只是让代码正常工作,而是弄清楚为什么是这样 作用域是什么 定义的变量存储在哪里?程序是如何找到变量的?实现的 规则就是作用域 传统编译语言执行前的编译三步骤(p5) ...