js生成tree形组织机构下拉框
[
{ id: 1, pid: 0, name:
'公司组织'
},
{ id: 2, pid: 1, name:
'总经办'
},
{ id: 3, pid: 1, name:
'人事部'
},
{ id: 4, pid: 1, name:
'生产部'
},
{ id: 5, pid: 4, name:
'现场组'
},
{ id: 6, pid: 4, name:
'组装组'
},
]
[
{ id: 1, pid: 0, name:
'公司组织'
,
children:[
{ id: 2, pid: 1, name:
'总经办
'
}
{ id: 3, pid: 1, name:
'人事部
'
}
{ id: 4, pid: 1, name:
'生产部
'
},children:[{ id: 5, pid: 4, name:
'现场组
'
}{ id: 6, pid: 4, name:
'组装组
'
}
]},
]
},
{ id: 1, pid: 0, name:
'公司组织'
,
children:[
{ id: 2, pid: 1, name:
'总经办
'
}
{ id: 3, pid: 1, name:
'人事部
'
}
{ id: 4, pid: 1, name:
'生产部
'
},children:[{ id: 5, pid: 4, name:
'现场组
'
}{ id: 6, pid: 4, name:
'组装组
'
}
]},
]
}
,
]
{
StringBuilder sbResult = new StringBuilder();
IList<SYS_Organization> orgList = sysPublicService.GetOrganizationList();//获取所有组织机构数据
if (orgList.Count > 0)
{
sbResult.Append("[{\"id\":0,\"name\": \"组织机构\",\"children\": ");
sbResult.Append(CreateOrganizationTreeJsonByModel(orgList, null));
sbResult.Append("}]");
}
else
{
sbResult.Append("[{\"id\":0,\"name\": \"组织机构\",\"children\": []}]");
}
return sbResult.ToString();
}
{
StringBuilder sbResult = new StringBuilder();
if (list.Count > 0)
{
sbResult.Append("[");
IList<SYS_Organization> models = list.Where(m => m._parentId == pId).ToList();
if (models.Count > 0)
{
foreach (SYS_Organization m in models)
{
sbResult.Append("{\"id\":\"" + m.org_id + "\",\"name\":\"" + m.org_name + "(" + m.org_code + ")\",\"state\":\"open\"");
if (list.Count(mm => mm._parentId == m.org_id) > 0)
{
sbResult.Append(",\"children\":");
sbResult.Append(CreateOrganizationTreeJsonByModel(list, m.org_id));
}
sbResult.Append("},");
}
sbResult = sbResult.Remove(sbResult.Length - 1, 1);
}
sbResult.Append("]");
}
return sbResult.ToString();
}
在网页中添加下拉框容器
<select id=
"selectbox"
name=
""
></select>
5.js脚本,递归生成
//获取容器对象
var selectbox=document.getElementById(
"selectbox"
);
//生成树下拉菜单
var j=
"-"
;
//前缀符号,用于显示父子关系,这里可以使用其它符号
function creatSelectTree(d){
var option=
""
;
for
(var i=0;i<d.length;i++){
if
(d[i].children!= undefined){
//如果有子集
option+=
"<option value='"
+d[i].id+
"'>"
+j+d[i].name+
"</option>"
;
j+=
"-"
;
//前缀符号加一个符号
option+=creatSelectTree(d[i].children);
//递归调用子集
j=j.slice(0,j.length-1);
//每次递归结束返回上级时,前缀符号需要减一个符号
}
else
{
//没有子集直接显示
option+=
"<option value='"
+d[i].id+
"'>"
+j+d[i].name+
"</option>"
;
}
}
return
option;
//返回最终html结果
}
//调用函数,并将结构出入到下拉框容器中
selectbox.innerHTML=creatSelectTree(tree);


js生成tree形组织机构下拉框的更多相关文章
- js实现可输入的下拉框
<HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> ...
- Vue.js中使用select选择下拉框
在Vue.js中使用select选择下拉框有两种方法: 第一种: Add.html: <select v-model="sysNotice.noticeType" id=&q ...
- js基于json的级联下拉框
级联下拉列表是项目中常用到的.比如省市县,比如企业性质等,做成一个js通用组件, 在静态页出来后可以直接插入,将数据和html静态页做一个解耦. 贴出来抛砖引玉吧. /** * @author sun ...
- Java使用poi生成Excel,生成两种表格下拉框
想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...
- 手把手教学~基于element封装tree树状下拉框
在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...
- FineReport——JS二次开发(下拉框)
下拉框显示多列时,输入的内容检索的内容为显示值整行数据,而不是实际值. 下拉框选择之后,控件显示的是显示值而非实际值. 对于下拉框显示队列,可以有多种方法,但是经过测试大多数方法不适用,检索效率太低, ...
- 用js实现两个select下拉框之间的元素互相移动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js中年份、月份下拉框
<select id="year" style="width: 100px;"></select> <select id=&quo ...
- 下拉框多级联动辅助js,优化您的下拉框
function IniteSelect(options) { $("body").IniteSelect(options) } (function ($) { $.fn.Init ...
随机推荐
- 新建DataTable
//创建DataTable DataTable dt = new DataTable("NewDt"); //创建自增长的ID列 DataColumn dc = dt.Column ...
- 使用IDEA的项目上传到GitHub
使用IDEA的项目上传到GitHub 前提条件: 1.配置好Git(https://jingyan.baidu.com/article/8275fc867b652046a03cf613.html) 2 ...
- week05 codelab01 Babel ES6 webpack Nodejsserver等
Babel 他出现的原因就是很多浏览器还未完全兼容ES6 需要将你写的ES6的内容转换成ES5让浏览器兼容运行 ES5和ES6相比出现很多新内容 比如拼接字符串 ES6可以` ` 里面如果引用变量就用 ...
- maven项目(转)
我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了.写该篇博文,就是为了帮助那些和我一样对于maven迷迷糊糊的人. ...
- shell 常用案例
此博文有自己写的其它朋友分享的,其中对其它朋友写的有问题的地方我简单做了一些修改,能保证运行. 1.写一个脚本通过ping命令测试192.168.0151到192.168.0.254之间的所有主机是否 ...
- CDH 安装 kafka
前言 其实cloudera已经做了这个事了,只是把kafka的包和cdh的parcel包分离了,只要我们把分离开的kafka的服务描述jar包和服务parcel包下载了,就可以实现完美集成了. 具体实 ...
- Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracle10g官方免账号下载地址 系统环境: Windows 7 64bit Excel 2 ...
- 【转】图解CSS padding、margin、border属性
http://www.cnblogs.com/linjiqin/p/3556497.html 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(b ...
- cacti 流量图合并
cacti 安装:https://www.cnblogs.com/weijie0717/p/4072711.html 一.需求介绍 由于交换机的多端口跑同一种流量,需要汇总统计.因此需要见多个端口的流 ...
- mysql数据库优化之 如何选择合适的列建立索引
1. 在where 从句,group by 从句,order by 从句,on 从句中出现的列: 2. 索引字段越小越好: 3. 离散度大的列放到联合索引的前面:比如: select * from p ...