controller动态获取单位用户树
#region 下拉树菜单
/// <summary>
/// 获取工作人员树菜单
/// </summary>
/// <param name="addid"></param>
/// <param name="unitid"></param>
/// <returns></returns>
public string GetUserMenu(int addid)
{
AID_UNIT_DAL unitdal = AID_UNIT_DAL._(); decimal unitid = this.CurrentUnitId;
List<AID_UNIT> unitList = unitdal.GetList().Where(c => c.UNITID == unitid).ToList(); List<Menu> menulist = new List<Menu>();
if (unitList.Count > )
{
Menu menu = new Menu();
foreach (var page in unitList)
{
menu.id = page.UNITID.ToString();
menu.text = page.UNITNAME;
var count = unitList.Where(c => c.PARENTUNIT == page.UNITID).Count();
if (count > )
{
menu.state = "closed";
BindMenu(menu, unitid);
}
BindStaffMenu(menu, unitid);
menulist.Add(menu);
}
}
string js = JsonMapper.ToJson(menulist);
return js;
}
/// <summary>
/// 绑定用户信息
/// </summary>
/// <param name="staffMenu"></param>
/// <param name="unitid"></param>
private void BindStaffMenu(Menu staffMenu, decimal unitid)
{
INFO_STAFF_DAL staffdal = INFO_STAFF_DAL._();
List<INFO_STAFF> staffList = staffdal.GetList().Where(c => c.WORKUNIT == unitid).ToList(); foreach (var staff in staffList)
{
Menu childMenu = new Menu();
childMenu.id = staff.STAFFID.ToString();
childMenu.text = staff.STAFFNAME;
//递归绑定
// BindStaffMenu(childMenu,unitid);
//给父菜单添加子菜单
staffMenu.children.Add(childMenu);
}
}
/// <summary>
/// 绑定子单位
/// </summary>
/// <param name="parentMenu"></param>
private void BindMenu(Menu parentMenu, decimal unitid)
{
AID_UNIT_DAL unitdal = AID_UNIT_DAL._();
List<AID_UNIT> secondary = unitdal.GetList().Where(p => p.PARENTUNIT == unitid).ToList();
foreach (var second in secondary)
{
Menu childMenu = new Menu();
childMenu.id = second.UNITID.ToString();
childMenu.text = second.UNITNAME;
var count = secondary.Where(c => c.PARENTUNIT == second.UNITID).Count();
if (count > )
childMenu.state = "closed";
//递归绑定
BindMenu(childMenu, unitid);
//给父菜单添加子菜单
parentMenu.children.Add(childMenu);
}
} //定义菜单类
private class Menu
{
private string _id;
private string _text;
private string _state;
private List<Menu> _children = new List<Menu>();
public string id { get { return _id; } set { _id = value; } }
public string text { get { return _text; } set { _text = value; } }
public string state { get { return _state; } set { _state = value; } }
public List<Menu> children { get { return _children; } set { _children = value; } }
}
#endregion
/// <summary>
/// 初始化单位下列树菜单
/// </summary>
/// <param name="addid">addid>0时,下拉树菜单含“*菜单”,addid<0时,下拉树菜单不含“*菜单”</param>
/// <returns></returns>
public ActionResult getReletiveUser(int addid)
{
string js = GetUserMenu(addid);
return Content(js, "application/json");
}
js动态生成复选框
<script type="text/javascript">
$("#USID").tree({
url: "/SystemMng/getReletiveUser?addid=" + ,
required: true,
panelHeight: ,
checkbox: true,
onBeforeSelect: function (node) {
if (node.state == "open") {
$("#hidUnit").val(node.id);
} else {
alert("请选择子单位!")
}
}
});
</script>
<ul class="easyui-tree" type="text" name="USID" id="USID" style="width:100%; height:34px; margin-left:15px;" data-options="">
easyui_tree 复选框 动态加载树的更多相关文章
-
LayUI 多选框动态加载、启用、禁用、赋值、取值等js实现
例如多选框如下: <div class="layui-form"> <select xm-select="city"> </sel ...
-
C#动态加载树菜单
在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...
-
bootstrap 模态框动态加载数据
.页面中添加modal <!-- 模态框(Modal) --> <div class="modal fade" id="showModal" ...
-
ExtJS 创建动态加载树
Ext 中导航树的创建有两种方式:1.首先将所有的数据读出来,然后绑定到前台页面.2.每点击一个节点展开后加载子节点.在数据量比较小的时候使用第一种方式加载的会快一些,然而当数据量比较大的时候,我还是 ...
-
LayUI中实现上级下拉框动态加载下级下拉框js
js代码: var form = layui.form, layer = layui.layer; form.on("select(上级)", function(data){ va ...
-
EasyUI Jquery 动态加载树,点击节点加载
<script type="text/javascript"> $(function() { $(document).ready(function() { $.post ...
-
jQuery 动态加载树
本案例中用到了jquery的 tree插件,在本文的附件中可以下载 jsp代码: <%@ page language="java" import="java.uti ...
-
【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
0.页面中准备树的ul <ul id="treeDemo10" class="ztree" style="display: none;" ...
-
表格中的checkbox复选框 全选非全选 公共方法 及提交选中结果
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
随机推荐
-
常用的一些linux命令
最近接触到一些linux环境部署的事情,下面分享一些最近使用的比较频繁的一些linux命令~ 1.一次性移动多个文件到一个文件夹里 mv 被移动文件名 -t 目标文件夹 如:mv a.txt b.t ...
-
常用RSS订阅地址
随着Google Reader关门大吉,转战鲜果网了,RSS订阅地址经过几次折腾,丢的没剩几个了,写个文章记录一下吧,随时补充. --PS-- ,微信.微博之类的是社交平台,不能很好的梳理知识,一直用 ...
-
为什么一个object_id在dba_objects中为什么查不到记录?
SQL> drop table test purge;SQL> create table test (id int,comments CLOB); SQL> select INDEX ...
-
AU3学习笔记
目录 1. AU3是什么?能做什么? 2. 乱学AU3中的命令(语言相关)? 3. 通过简单示例学习AU3? 4. 正则表达式的学习(对大小写敏感) 5.对于GUI的相关学习 1. AU ...
-
Javacript 学习笔记
一.初探 javacript 学习无法是围绕着对象和属性两个方面来兜圈子,万变不离其宗. 在js中,能点出来的,或者中括号里面的必然是属性(方法).数组除外. 对象调用属性! 对象调用属性! 对象调用 ...
-
Spark环境搭建(上)——基础环境搭建
Spark摘说 Spark的环境搭建涉及三个部分,一是linux系统基础环境搭建,二是Hadoop集群安装,三是Spark集群安装.在这里,主要介绍Spark在Centos系统上的准备工作--linu ...
-
LeetCode的刷题利器(伪装到老板都无法diss你没有工作)
在工程效率大行其道的今天,如果不会写点代码以后也不容易在测试圈混下去.今天给大家推荐一个LeetCode的刷题利器,可以伪装到连你老板在这里走过去都无法确认你是在干活呢,还是在干活呢. LeetCod ...
-
vue props命名最好直接使用kebab-case (短横线隔开式) 命名
vue官方解释,props使用驼峰命名的话,在html中使用时也需要转化成短横线命名,否则报错.个人比较喜欢上下文统一,直接在props命名时就把它命名成短横线隔开式吧.
-
webpack打包去除map文件及其他一些配置
一.vue-cli(3.x)搭建的项目,webpack(3.x)打包时,生成的map文件很大,目前又不知道是干嘛用的,所以就直接去掉了. 方法: 修改sourceMap配置成为false. 1:在bu ...
-
Netty源码分析第6章(解码器)---->;第3节: 行解码器
Netty源码分析第六章: 解码器 第三节: 行解码器 这一小节了解下行解码器LineBasedFrameDecoder, 行解码器的功能是一个字节流, 以\r\n或者直接以\n结尾进行解码, 也就是 ...