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 ...
随机推荐
- MySQL中链接查询inner join与left join使用
连接查询其实就是对两个表记录做笛卡尔乘积.如果不指定连接条件的话,则会对每行都做笛卡尔乘积,这样最后返回的结果树就会是两个表记录数的乘积:如果指定则,则仅对符合列条件的行进行笛卡尔乘积,并返回结果.在 ...
- 用EventEmitter收发消息
下面简单介绍其步骤. <发消息 方> 1.import进EventEmitter import { EventEmitter } from '@angular/core'; 2.在Comp ...
- Grafana短信报警实现
1.阿里云短信服务API2.Jenkins-plugin:Generic Webhook Trigger Plugin 阿里云 下载阿里云短信服务SDK 创建短信服务ACCESS_KEY_ID Gra ...
- 移动端ios下H5的:active样式失效的解决方法
在body上绑定一个touchstart事件,空函数就行: document.body.addEventListener('touchstart', function(){}, false) 或者在b ...
- jquery中attr属性操作
- 定位篇align_measurements
算子:create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metr ...
- hbuilder 打包 vueAPP
1:设置状态栏颜色 在manifest.json 找到 plus 下添加 "statusbar": { "immersed": true/*沉浸式状态栏*/ 设 ...
- Spinner 默认选中
https://blog.csdn.net/u014737138/article/details/49495847 spinner.setSelection(2,true); 就这样一行代码,很重要 ...
- Game Engine Architecture 11
[Game Engine Architecture 11] 1.three most-common techniques used in modern game engines. 1)Cel Anim ...
- Java简单操作dubbo(一)
dubbo-service公共Service package com.itman.service; public interface UserService { // 提供服务 使用userId查找用 ...