- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Text;
- using System.Data;
- using System.Collections;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using RBAC;
- using Newtonsoft.Json;
- public partial class DepartmentConfig : BaseRolePage
- {
- protected DataTable dtTree = new DataTable();
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- dtTree = Maticsoft.DBUtility.DbHelperSQL.Query("select * from SY_DEPARTMENT").Tables[0];
- }
- }
- #region 获取无限分级数据
- /// <summary>
- /// 获取无限分级数据
- /// </summary>
- /// <returns></returns>
- protected string GetLevelJson()
- {
- //获取全部集合
- List<DepartModel> allModel = new List<DepartModel>();
- DataTable dt = dtTree.Copy();
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- DataRow dr = dt.Rows[i];
- DepartModel model = new DepartModel();
- model.id = (int)dr["departID"];
- model.dname = dr["departName"].ToString();
- model.fid = (int)dr["fatherDepartID"];
- allModel.Add(model);
- }
- //筛选顶级分类
- var topItems = allModel.Where(e => e.fid == 0).ToList(); //顶级分类
- List<DepartModel> topModels = new List<DepartModel>();
- foreach (var item in topItems)
- {
- DepartModel topModel = new DepartModel();
- topModel.id = item.id;
- topModel.dname = item.dname;
- topModel.fid = item.fid;
- LoopToAppendChildren(allModel, topModel);
- topModels.Add(topModel);
- }
- string json = JsonConvert.SerializeObject(topModels);
- return json;
- }
- /// <summary>
- /// 继续追溯子类
- /// </summary>
- /// <param name="allList">全部数据</param>
- /// <param name="curItem">当前节点</param>
- protected void LoopToAppendChildren(List<DepartModel> allList, DepartModel curItem)
- {
- var subItems = allList.Where(ee => ee.fid == curItem.id).ToList();
- curItem.childs = new List<DepartModel>();
- curItem.childs.AddRange(subItems);
- foreach (var subItem in subItems)
- {
- LoopToAppendChildren(allList, subItem);
- }
- }
- #endregion
- #region 数据实体类
- public class DepartModel
- {
- public int id;
- public string dname;
- public int fid;
- public List<DepartModel> childs;
- }
- #endregion
- }
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DepartmentConfig.aspx.cs" Inherits="DepartmentConfig" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title>组织架构</title>
- <link type="text/css" rel="stylesheet" href="../css/default.css" />
- <link type="text/css" rel="stylesheet" href="../css/jquery_dialog.css" />
- <link rel="stylesheet" type="text/css" href="../JS/jquery-easyui-1.5/themes/default/easyui.css" />
- <script type="text/javascript" src="../JS/jquery-easyui-1.5/jquery.min.js"></script>
- <script type="text/javascript" src="../JS/jquery_dialog.js"></script>
- <script type="text/javascript" src="../js/common.js"></script>
- <script type="text/javascript">
- $(function(){
- var json=<%=GetLevelJson()%>;
- var tableHtml= "<table id='tableAction' class='tableCss'>";
- tableHtml += "<th>部门ID</th><th>部门名称</th><th></th>";
- tableHtml +="</table>";
- $(".LoopSpan").empty().append(tableHtml);
- $.each(json, function (index) {
- //循环获取数据 顶级
- var id = json[index].id;
- var name = json[index].dname;
- var fatherid = json[index].fid;
- var childs = json[index].childs;
- //组装
- DoLoop("",childs,name,id,fatherid,0);
- });
- //注册删除事件
- $(".alink_del").click(function(){
- if (confirm("确定删除?")) {
- var id = $(this).attr("data-id");
- $.ajax({
- url: 'RoleHandler.ashx',
- data: { "method": "delete_depart", "id": id },
- type: 'GET',
- timeout: 1000,
- cache: false,
- error: erryFunction,
- success: succFunction
- })
- function erryFunction() {
- alert("error");
- }
- function succFunction(data) {
- //0无参数 1有下级 2删除成功 3删除失败
- switch (data) {
- case "0":
- alert("参数错误");
- break;
- case "1":
- alert("此数据存在下级,为防止误操作\n确保数据安全,请从末级往上逐级删除。");
- break;
- case "2":
- alert("删除成功!");
- window.location.href = window.location.href;
- break;
- case "3":
- alert("删除失败,请稍后再试!");
- break;
- default:
- break;
- }
- }
- }
- });
- //折叠展开
- $(".tree-hit").click(function(){
- var data=[];
- var children = [];
- $("#tableAction").find("tr").each(function(i){
- var id=$(this).attr("data-id");
- var fid=$(this).attr("data-fid");
- if (typeof(id)!="undefined") {
- data.push({"id":id, "fid":fid});
- }
- });
- var id=$(this).parent().parent().attr("data-id");
- if (typeof(id)!="undefined") {
- //是否折叠
- var closeFlag= $(this).hasClass("tree-expanded") ? true:false;
- var arr=getChildren(data,children,id);
- if (closeFlag) { //折叠
- $(this).removeClass("tree-expanded").addClass("tree-collapsed");
- //tree-folder tree-folder-open //tree-folder
- $(this).next("span").removeClass("tree-folder-open")
- }
- else{ //展开
- $(this).removeClass("tree-collapsed").addClass("tree-expanded");
- $(this).next("span").addClass("tree-folder-open")
- }
- openClose(arr,closeFlag);
- };
- });
- });
- //递归获取子类及下属类 无限下级
- function getChildren(data,children,id)
- {
- for(var i=0;i<data.length;i++){
- var iid=data[i]["id"];
- var fid=data[i]["fid"];
- if(id == fid){
- children.push(iid);
- getChildren(data,children,iid);
- }
- }
- return children;
- }
- //折叠展开
- function openClose(arr,closeFlag)
- {
- $("#tableAction").find("tr").each(function(i){
- var id=$(this).attr("data-id");
- if($.inArray(id,arr)>-1){
- if (closeFlag) { //折叠
- $(this).find("span").eq(0).removeClass("tree-collapsed").addClass("tree-expanded");
- $(this).find("span").eq(1).addClass("tree-folder-open")
- $(this).hide();
- }
- else{ //展开
- $(this).find("span").eq(0).removeClass("tree-collapsed").addClass("tree-expanded");
- $(this).find("span").eq(1).next("span").addClass("tree-folder-open")
- $(this).show();
- }
- }
- });
- }
- //递归
- function DoLoop(loopHtml,child_models,dname,id,fatherid,level)
- {
- var loopHtml = "";
- loopHtml += "<tr data-id='" + id + "' data-fid='" + fatherid + "'>";
- loopHtml += "<td width='10%' style='text-align:center'>";
- loopHtml += id;
- loopHtml += "</td>";
- loopHtml += "<td valign='bottom' width='40%' style='text-align:left'>"
- loopHtml += PreText(level) ;
- //<span class="tree-hit tree-collapsed"></span>
- loopHtml += (child_models.length > 0) ? "<span id='" + id + "' class=\"tree-hit tree-expanded\"></span><span class=\"tree-icon tree-folder tree-folder-open\"></span>":"<span class=\"tree-icon tree-file\"></span>"; //tree-open
- loopHtml += dname;
- loopHtml += "</td>";
- loopHtml +="<td width='50%'>";
- loopHtml +="<a href='javascript:showMyModalDialog(\"DepartmentAdd.aspx?fid=" + id + "\",\"600\",\"300\");'>新增下级</a> ";
- loopHtml +="<a href='javascript:showMyModalDialog(\"DepartmentEdit.aspx?id=" + id + "\",\"600\",\"300\");'>编辑</a> ";
- loopHtml +="<a href='javascript:void(0);' data-id='" + id + "' class='alink_del'>删除</a>";
- loopHtml +="</td>";
- loopHtml +="</tr>";
- $("#tableAction").append(loopHtml);
- if (child_models.length > 0) { //有子类
- level++;
- $.each(child_models, function (index) {
- var id = child_models[index].id;
- var name = child_models[index].dname;
- var fatherid = child_models[index].fid;
- var childs = child_models[index].childs;
- //递归
- DoLoop(loopHtml,childs,name,id,fatherid,level);
- });
- }
- }
- function PreText(level)
- {
- var str="";
- for (var i = 0; i < level; i++) {
- str +=" ";
- }
- str += (level>0) ? " " :"";
- return str;
- }
- </script>
- <style type="text/css">
- tree-open {
- background: url('images/tree_icons.png') no-repeat -96px 0px;
- }
- tree-close {
- background: url('images/tree_icons.png') no-repeat -112px 0px;
- }
- </style>
- </head>
- <body>
- <form id="form1" runat="server">
- <span class="tableTip">组织架构</span>
- <div class="LoopSpan"></div>
- <br />
- <table class="tableCss">
- <tr>
- <td></td>
- </tr>
- </table>
- </form>
- </body>
- </html>
- [
- {
- "id": 600,
- "dname": "集团中国总部",
- "fid": 0,
- "childs": [
- {
- "id": 601,
- "dname": "广东省公司",
- "fid": 600,
- "childs": [
- {
- "id": 602,
- "dname": "深圳分公司",
- "fid": 601,
- "childs": [
- {
- "id": 603,
- "dname": "福田办事处",
- "fid": 602,
- "childs": [
- {
- "id": 613,
- "dname": "车公庙办事点",
- "fid": 603,
- "childs": []
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": 606,
- "dname": "湖南省公司",
- "fid": 600,
- "childs": [
- {
- "id": 607,
- "dname": "长沙分公司",
- "fid": 606,
- "childs": []
- }
- ]
- },
- {
- "id": 612,
- "dname": "上海市公司",
- "fid": 600,
- "childs": []
- }
- ]
- },
- {
- "id": 604,
- "dname": "集团美国总部",
- "fid": 0,
- "childs": [
- {
- "id": 605,
- "dname": "纽约分公司",
- "fid": 604,
- "childs": [
- {
- "id": 611,
- "dname": "曼哈顿办事处",
- "fid": 605,
- "childs": []
- }
- ]
- }
- ]
- }
- ]
转载:http://blog.csdn.net/smartsmile2012/article/details/53018972