EasyUI ComboTree数据绑定树形分类显示

承接上篇博文【LINQ获取树形分类的层数】。在上文中,笔者只分享了层数,在这里我把完整的实现贴出来,欢迎批评指正。

先附上效果图:

首先是Tree公共类

  1. public class Tree

  2. {

  3. public int ModuleID { get; set; }
  4. public int ParentID { get; set; }
  5. public int ModulePath { get; set; }
  6. public string ModuleName { get; set; }

  7. }

接下来就是TreeHelper了,这个类是获取json数据的核心他将数据库中的数据组装成了EasyUI可以接受的json格式。

  1. public class DepartmentTreeHelper

  2. {

  3. private static ZhaopinModels db = new ZhaopinModels();
  4. #region
    获取父类集合
  5. public static IList<Tree>
    returnParentTree()

  6. {

  7. IList<Tree> trees = new List<Tree>();

  8. List<TUserDepartment> departments = db.TUserDepartments.Where(d =>
    d.department_pid == 0).ToList();
  9. foreach (var
    userDepartment in departments)

  10. {

  11. Tree tree = new Tree();

  12. tree.ModuleID = userDepartment.id;

  13. tree.ParentID = (int)
    userDepartment.department_pid;

  14. tree.ModulePath = GetLayerById(tree.ModuleID);

  15. tree.ModuleName = userDepartment.department_name;

  16. trees.Add(tree);

  17. }

  18. return trees;

  19. }
  20. #endregion
  21. #region
    获取分类的层数
  22. ///
    <summary>

  23. ///
    获取分类的层数

  24. ///
    </summary>

  25. ///
    <param
    name="id">根据id获取树的层数</param>

  26. ///
    <returns>树的层数</returns>

  27. private static int GetLayerById(int id)

  28. {

  29. int layer = 1;

  30. for (

  31. int subId =

  32. (int)

  33. db.TUserDepartments.Where(d => d.id == id)

  34. .Select(d => d.department_pid)

  35. .ToList()

  36. .FirstOrDefault();

  37. subId != 0;)

  38. {

  39. subId =

  40. (int)

  41. db.TUserDepartments.Where(d => d.id == subId)

  42. .Select(d => d.department_pid)

  43. .ToList()

  44. .FirstOrDefault();

  45. layer++;

  46. }

  47. return layer;

  48. }
  49. #endregion
  50. #region
    判断分类是否有子类
  51. ///
    <summary>

  52. ///
    判断分类是否有子类

  53. ///
    </summary>

  54. ///
    <param name="id"></param>

  55. ///
    <returns></returns>

  56. public static bool IsHaveChild(int id)

  57. {

  58. bool flag = false;

  59. var did =
    db.TUserDepartments.Where(d => d.department_pid == id).Select(d =>
    d.id).ToList();

  60. if (did.Count >
    0)

  61. {

  62. flag = true;

  63. }

  64. return flag;

  65. }
  66. #endregion
  67. #region
    根据id获取子类
  68. ///
    <summary>

  69. ///
    根据id获取子类

  70. ///
    </summary>

  71. ///
    <param name="id"></param>

  72. ///
    <returns></returns>

  73. public static IList<Tree>
    GetChild(int id)

  74. {

  75. IList<Tree> t = new List<Tree>();

  76. List<TUserDepartment> departments = db.TUserDepartments.Where(d =>
    d.department_pid == id).ToList();

  77. foreach (var d in departments)

  78. {

  79. Tree tParent = new Tree();

  80. tParent.ModuleID = d.id;

  81. tParent.ParentID = (int)
    d.department_pid;

  82. tParent.ModulePath =
    DepartmentTreeHelper.GetLayerById(tParent.ModuleID);

  83. tParent.ModuleName = d.department_name;
  84. t.Add(tParent);

  85. }

  86. return t;

  87. }
  88. #endregion
  89. #region
    获取json
  90. ///
    <summary>

  91. ///
    获取json

  92. ///
    </summary>

  93. ///
    <returns></returns>

  94. public static string GetJson()

  95. {

  96. string json = "[";

  97. IList<Tree> t =
    DepartmentTreeHelper.returnParentTree();

  98. foreach (Tree model in t)

  99. {

  100. if (model != t[t.Count -
    1])

  101. {

  102. json += DepartmentTreeHelper.GetJsonByModel(model) + ",";

  103. }

  104. else

  105. {

  106. json += DepartmentTreeHelper.GetJsonByModel(model);

  107. }

  108. }

  109. json += "]";

  110. json =
    json.Replace("‘", "\"");

  111. return json;

  112. }
  113. #endregion
  114. #region
    根据模型生成json
  115. ///
    <summary>

  116. ///
    根据模型生成json

  117. ///
    </summary>

  118. ///
    <param name="t"></param>

  119. ///
    <returns></returns>

  120. public static string GetJsonByModel(Tree
    t)

  121. {

  122. string json = "";

  123. bool flag =
    DepartmentTreeHelper.IsHaveChild(t.ModuleID);
  124. json
    = "{"

  125. + "‘id‘:‘" + t.ModuleID
    + "‘,"

  126. + "‘text‘:‘" + t.ModuleName
    + "‘,"

  127. + "‘iconCls‘:‘ok‘,"

  128. + "‘children‘:";

  129. if (!flag)

  130. {

  131. json += "null}";

  132. }

  133. else

  134. {

  135. json += "[";

  136. IList<Tree> list =
    DepartmentTreeHelper.GetChild(t.ModuleID);

  137. foreach (Tree tree in list)

  138. {

  139. if (tree != list[list.Count -
    1])

  140. {

  141. json += GetJsonByModel(tree) + ",";

  142. }

  143. else

  144. {

  145. json += GetJsonByModel(tree);

  146. }

  147. }

  148. json += "]}";

  149. }

  150. return json;

  151. }
  152. #endregion

  153. }

EasyUI ComboTree数据绑定树形分类显示,布布扣,bubuko.com

时间: 2024-08-06 23:51:18

EasyUI ComboTree数据绑定树形分类显示的相关文章

EasyUI ComboTree(树形下拉框) 简单实例

前台: <input id="cc">   <script type="text/javascript"> $('#cc').combotree({ required: true }).combotree("tree").tree({ url: 'tree.ashx?id=0&state=closed', checkbox: false, onBeforeExpand: function (node, param)

第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于 DataGrid(数据表格)组件. 一.加载方式 建立一个 JSON 文件 [ { "id": 1, "name": "系统管理", "date": "2015-05-10", &quo

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

EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等.当提交表单时,调用 'validate' 方法来检查表单是否有效. 用法 创建一个简单的 HTML 表单.构建表单并给 id.action.method 赋值. <form id="ff" method="post"> <div> <lab

jeasyui分类显示

这个主要用于jeasyui框架 如图所示 要想显示为上面的效果,在js中应该写如下的代码 var grid = { bind: function (winSize) { $('#list').datagrid({ url: actionURL+"?op=list", toolbar: '#toolbar', title: "财务账户管理列表", iconCls: 'icon icon-list', width: winSize.width, height: winS

EasyUI Combotree只选择叶子节点

EasyUI Combotree的方法拓展自Combo和Tree.而Tree有一个onBeforSelect事件来帮助我们实现只选择叶子节点的功能. Tree事件需要 'node' 参数,它包括下列属性: id:绑定到节点的标识值. text:要显示的文本. iconCls:用来显示图标的 css class. checked:节点是否被选中. state:节点状态,'open' 或 'closed'. attributes:绑定到节点的自定义属性. target:目标的 DOM 对象. onB

CSS3实战开发: 纯CSS实现图片过滤分类显示特效

各位网友大家好,今天我要带领大家开发一个纯CSS的图片分类显示的网址导航,单纯看标题大家可能有些困惑,依照以往惯例,我先给大家演示一下实际运行效果: 从上面的运行效果,大家不难发现,当我点击某一菜单时,导航区域会相应高亮显示此分类的图标,而其他图标则会变暗. 很多人可能会说,这个这么简单,直接使用javascript或jQuery等前端框架,再配合一些CSS,就可以很快实现同样的效果了.如果你是这一部分人,我也希望你停下脚步,看看这篇教程.因为在今天这篇教程中,我会用另一个思维方式来思考问题,我

LINQ获取树形分类的层数

数据库中的数据格式: 字段 数据类型 id int department_pid int department_name nvarchar(20) CREATE TABLE [dbo].[T_user_department]( [id] [int] IDENTITY(1,1) NOT NULL, [department_pid] [int] NULL, [department_name] [nvarchar](20) NULL, CONSTRAINT [PK_T_USER_DEPARTMENT]

easyui combotree不让父级选中

easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#combotree").combotree({ width: 300, data: [{ "id": 1, "text": "My Documents", "children": [{ "id": 11, &

【转】linux tree命令以树形结构显示文件目录结构 ---- 不错

原文网址:http://jingyan.baidu.com/article/acf728fd19c7eff8e510a3eb.html 今天小编来给分享Linux 系统下一个非常有用的命令的使用:tree命令可以以树形结构显示文件目录结构,它非常适合于我们给别人介绍我们的文件目录的组成框架,同时该命令使用适当的参数也可以将命令结果输出到文本文件中. 本经验说明: 小编的这个建议只适合于10.10之前版本的ubuntu系统,后面的11.04,11.10...14.04系统因为采用的默认桌面不同,所