/// <summary> /// 递归初始化持久化内容 /// </summary> private void InitPersistKey(JObject jobject, int year) { //1、遍历所有的子菜单,找到匹配的展开项 //2、加载展开项的子菜单,从匹配列表中移除已加载的展开项 //3、重新执行 1~2 //AllCategories. foreach (JObject jCate in jobject["children"]) { if (_expandedKeys.Count == 0) { break; } var matchedExpandedKey = _expandedKeys.FirstOrDefault(p => p == jCate["key"].ToString()); if (matchedExpandedKey != null) { jCate["children"] = new JArray( AllDepts.Where(m => m.DepartmentType == (int)jCate["key"] && m.RegYear == year) .OrderBy(p => p.OrderNum) .ThenBy(p => p.ID) .Select(ParseDeptJObject)); _expandedKeys.Remove(matchedExpandedKey); } } }
/// <summary> /// 获取根菜单Json /// </summary> private string GetRoot(int deptId) { //根结点 var root = AllDepts.FirstOrDefault(p => p.ID == deptId); if (root == null) { return(null); } var jObject = new JObject( new JProperty("title", root.Name), new JProperty("tooltip", root.ID.ToString()), new JProperty("isFolder", true), new JProperty("isLazy", false), new JProperty("activate", true), new JProperty("hideCheckbox", true), //根菜单隐藏勾选框 new JProperty("addClass", "menuTreeRoot"), new JProperty("expand", true), //展开 new JProperty("key", root.ID), new JProperty("nodeType", "Dept") ); var deptTypes = typeof(SysDeptType).GetValueDescriptionCollection(); jObject.Add("children", new JArray( deptTypes.Select(ParseDeptTypeJObject) )); return(jObject.ToString()); }
private string GetChildren(int deptType, int year) { var children = AllDepts.Where(p => p.DepartmentType == deptType && p.RegYear == year) .OrderBy(p => p.OrderNum) .ThenBy(p => p.ID); var jArray = new JArray(children.Select(ParseDeptJObject)); return(jArray.ToString()); }
/// <summary> /// 将dept对象解析为json对象 /// </summary> /// <param name="menu"></param> /// <returns></returns> private JObject ParseDeptTypeJObject(KeyValuePair <int, string> deptType, int year) { return(new JObject( new JProperty("title", deptType.Value), new JProperty("tooltip", deptType.Key.ToString()), new JProperty("isFolder", AllDepts.Any(m => m.DepartmentType == deptType.Key && m.RegYear == year)), new JProperty("isLazy", AllDepts.Any(m => m.DepartmentType == deptType.Key && m.RegYear == year)), new JProperty("select", false), new JProperty("hideCheckbox", true), //隐藏勾选框 new JProperty("addClass", " "), new JProperty("expand", false), new JProperty("key", deptType.Key), new JProperty("nodeType", "DeptType") )); }
/// <summary> /// 获取根菜单Json /// </summary> private string GetRoot(int year) { //根结点 var root = AllDepts.FirstOrDefault(p => p.ID == SysConsts.RootDeptID); if (root == null) { return(null); } var jObject = new JObject( new JProperty("title", root.Name), new JProperty("tooltip", root.ID.ToString()), new JProperty("isFolder", true), new JProperty("isLazy", false), new JProperty("activate", true), new JProperty("hideCheckbox", true), //根菜单隐藏勾选框 new JProperty("addClass", "menuTreeRoot"), new JProperty("expand", true), //展开 new JProperty("key", root.ID), new JProperty("nodeType", "Dept") ); var deptTypes = typeof(SysDeptType).GetValueDescriptionCollection(); jObject.Add("children", new JArray( deptTypes.Select(d => ParseDeptTypeJObject(d, year)) )); //已展开的结点列表 if (_expandedKeyList != null && _expandedKeyList.Length > 0) { _expandedKeys = _expandedKeyList.Split(',').ToList(); if (_expandedKeys.Count > 0) { //去除根结点 _expandedKeys.Remove(root.ID.ToString()); InitPersistKey(jObject, year); } } return(jObject.ToString()); }