zoukankan      html  css  js  c++  java
  • 树形插件zTree与组织插件jOrgChart交互

      1 <html>
      2 <head>
      3     <title>组织架构</title>
      4     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      5     <link href="jquery.ztree/style.css" rel="stylesheet" />
      6     <link href="jquery.ztree/zTreeStyle.css" rel="stylesheet" />
      7     <script src="jquery.ztree/jquery-1.4.4.min.js"></script>
      8     <script src="jquery.ztree/jquery.ztree.core.js"></script>
      9     <link href="jOrgChart-master/example/css/jquery.jOrgChart.css" rel="stylesheet" />
     10     <script src="jOrgChart-master/jquery.min.js"></script>
     11     <script src="jOrgChart-master/example/jquery.jOrgChart.js"></script>
     12     <style>
     13         table {
     14             margin: 0 auto;
     15         }
     16         a {
     17             text-decoration: none;
     18             color: #000000;
     19             font-size: 12px;
     20         }
     21         .jOrgChart .node {
     22             padding: 6px 1px 2px 5px;
     23             border-radius: 3px;
     24             width: 20px;
     25             height: 100px;
     26             /*line-height: 17px;*/
     27             letter-spacing: 3px;
     28             border: 1px solid #726bf7;
     29             /* 150px;
     30             height: 50px;
     31             line-height: 50px;
     32             border-radius: 4px;*/
     33             /*margin: 0 8px;*/
     34         }
     35         .tj {
     36             color: #000000;
     37             text-align: center;
     38             font-weight: bold;
     39             font-size: 12px;
     40             border: 1px solid #726bf7;
     41             border-radius: 3px;
     42         }
     43        
     44     </style>
     45 </head>
     46 <body>
     47     <div class="float_affter">
     48         <div style="20%;height:100%; float: left; border-right: 1px solid #cac5c3; box-sizing: border-box; overflow: auto; ">
     49             <ul id="treeDemo" class="ztree" style="margin-top:20px"></ul>
     50         </div>
     51        
     52         <div>
     53             <table style="80%;height:50px; text-align:left; border-bottom : 1px solid #cac5c3;box-sizing: border-box;">
     54                 <tr>
     55                     <td class="tj" onClick="jc_click()">基层工会:<label id="jcghs"></label></td>
     56                     <td class="tj" onClick="hf_click()">分会:<label id="fhs"></label></td>
     57                     <td class="tj  onClick="hy_click()">会员:<label id="hys"></label></td>
     58                     <td class="tj">男:<label id="nxs"></label></td>
     59                     <td class="tj">女:<label id="vxs"></label></td>
     60                     
     61                    
     62                 </tr>
     63                 <tr>
     64                     <td class="tj">中专:<label id="zzs"></label></td>
     65                     <td class="tj">专科:<label id="zks"></label></td>
     66                     <td class="tj">本科:<label id="bks"></label></td>
     67                     <td class="tj">硕士研究生:<label id="shyjss"></label></td>
     68                     <td class="tj">博士研究生:<label id="bsyjss"></label></td>
     69                     <td class="tj">其他学历:<label id="qtxls"></label></td>
     70                 </tr>
     71             </table>
     72             <div id='jOrgChart' style="80%;margin-top:20px;float:left;"></div>
     73         </div>
     74     </div>
     75 </body>
     76 </html>
     77 <script type="text/javascript">
     78     jQuery.noConflict();
     79     var zNodes;
     80     var zTree;
     81     //setting异步加载的设置
     82     var setting = {
     83         async: {
     84             enable: true, //表示异步加载生效
     85             url: "../Ajax/OrganizationalStructureAjax.ashx", // 异步加载时访问的页面
     86             autoParam: ["id"], // 异步加载时自动提交的父节点属性的参数
     87             otherParam: ["ajaxMethod", 'AnsyData'], //ajax请求时提交的参数
     88             type: 'post',
     89             dataType: 'json'
     90         },
     91         checkable: true,
     92         showIcon: true,
     93         showLine: true, // zTree显示连接线
     94         data: {  //用pId来标识父子节点的关系
     95             simpleData: {
     96                 enable: true
     97             }
     98         },
     99         expandSpeed: "", // 设置 zTree 节点展开、折叠的动画速度,默认为"fast",""表示无动画
    100         callback: { // 回调函数
    101             onClick: zTreeOnClick, // 单击鼠标事件
    102             asyncSuccess: zTreeOnAsyncSuccess //异步加载成功事件
    103         }
    104     };
    105     
    106     $(document).ready(function () {
    107         //初始化
    108         Inint();
    109         jOrgChart(false);
    110         $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    111         //openFirstTreenode();
    112         // alert(JSON.stringify(zNodes));
    113     });
    114     /*
    115      * 初始化加载树形节点
    116      * */
    117     function Inint(UNION_CODE) {
    118         //$.ajax({
    119         //    url: '../Ajax/OrganizationalStructureAjax.ashx',
    120         //    //url: 'test1.json',
    121         //    type: 'post',
    122         //    dataType: 'json',
    123         //    async: false,
    124         //    data: { 'ajaxMethod': 'FirstAnsyData' },
    125         //    success: function (data) {
    126         //        zNodes = data;
    127                 
    128         //       // alert(JSON.stringify(zNodes)); 
    129         //    }
    130         //});
    131      //初始化加载组织结构图
    132         $.ajax({
    133             url: '../Ajax/OrganizationalStructureAjax.ashx',
    134             type: 'post',
    135             dataType: 'json',
    136             async: false,
    137             data: { 'ajaxMethod': 'Summary', 'OrgId': UNION_CODE},
    138             success: function (data) {
    139 
    140                 $("#jcghs").text(data.jcghs == "" ? 0 : data.jcghs);
    141                 $("#fhs").text(data.fhs == "" ? 0 : data.fhs);
    142                 $("#hys").text(data.hys == "" ? 0 : data.hys);
    143                 $("#nxs").text(data.nxs == "" ? 0 : data.nxs);
    144                 $("#vxs").text(data.vxs == "" ? 0 : data.vxs);
    145                 $("#zzs").text(data.zzs == "" ? 0 : data.zzs);
    146                 $("#zks").text(data.zks == "" ? 0 : data.zks);
    147                 $("#bks").text(data.bks == "" ? 0 : data.bks);
    148                 $("#shyjss").text(data.shyjss == "" ? 0 : data.shyjss);
    149                 $("#bsyjss").text(data.bsyjss == "" ? 0 : data.bsyjss);
    150                 $("#qtxls").text(data.qtxls == "" ? 0 : data.qtxls);
    151             }
    152         });
    153      
    154 
    155     };
    156 
    157     function jOrgChart(isshow) {
    158         $.ajax({
    159             //树图根节点下次查询数据,
    160             url: '../Ajax/OrganizationalStructureAjax.ashx',
    161             type: 'post',
    162             dataType: 'json',
    163             async: false,
    164             data: { 'ajaxMethod': 'GetjOrgChartJson', 'isshow': isshow },
    165             success: function (data) {
    166                 var showlist = $("<ul id='org' style='display:none'></ul>");
    167                 showall(data, showlist);
    168                 jQuery("#jOrgChart").append(showlist);
    169                 jQuery("#org").jOrgChart({
    170                     chartElement: '#jOrgChart',//指定在某个dom生成jorgchart
    171                     dragAndDrop: true //设置是否可拖动
    172                 });
    173             }
    174         });
    175         EngthControl();
    176 
    177        
    178 
    179       
    180        // alert("一级"+d1+"二级" + d2+"三级" + d3);
    181     }
    182     //边框自适应
    183     function EngthControl() {
    184 
    185         //组织图三层数量
    186         var d1 = $("#jOrgChart .node a.1").length;
    187         var d2 = $("#jOrgChart .node a.2").length;
    188         var d3 = $("#jOrgChart .node a.3").length;
    189         //组织图方框大小根据字体个数变化
    190         $("#jOrgChart .node a").each(function () {
    191             //更改横竖显示
    192             if ($(this).attr('class') == '1') {
    193                 $(this).parent().height(20);
    194                 $(this).parent().width($(this).text().length * 16);
    195             }
    196             if ($(this).attr('class') == '2') {
    197                 $(this).parent().height(20);
    198                 $(this).parent().width($(this).text().length * 16);
    199                 //if (d2 > 5) {
    200                 //    return false;
    201                 //    $(this).parents(".node-container:first").hide();
    202                 //}
    203             }
    204             if ($(this).attr('class') == '3') {
    205 
    206                 $(this).parent().height($(this).text().length * 16);
    207                 $(this).parent().width(20);
    208             }
    209             //根据层级数据省略显示
    210 
    211             //$(this).height($(this).text().length * 16);
    212         });
    213     }
    214 
    215     
    216 
    217     //单击时获取zTree节点的Id,和value的值
    218     function zTreeOnClick(event, treeId, treeNode, clickFlag) {
    219         //单机某个节点后展示组织结构图
    220       //alert("单击" + treeNode.name + ",ID为" + treeNode.id);
    221 
    222         $.ajax({
    223             url: '../Ajax/OrganizationalStructureAjax.ashx',
    224             type: 'post',
    225             dataType: 'json',
    226             async: false,
    227             data: { 'ajaxMethod': 'Summary', 'treeNodeID': treeNode.id },
    228             success: function (data) {
    229                 $("#jcghs").text(data.jcghs == "" ? 0 : data.jcghs);
    230                 $("#fhs").text(data.fhs == "" ? 0 : data.fhs);
    231                 $("#hys").text(data.hys == "" ? 0 : data.hys);
    232                 $("#nxs").text(data.nxs == "" ? 0 : data.nxs);
    233                 $("#vxs").text(data.vxs == "" ? 0 : data.vxs);
    234                 $("#zzs").text(data.zzs == "" ? 0 : data.zzs);
    235                 $("#zks").text(data.zks == "" ? 0 : data.zks);
    236                 $("#bks").text(data.bks == "" ? 0 : data.bks);
    237                 $("#shyjss").text(data.shyjss == "" ? 0 : data.shyjss);
    238                 $("#bsyjss").text(data.bsyjss == "" ? 0 : data.bsyjss);
    239                 $("#qtxls").text(data.qtxls == "" ? 0 : data.qtxls);
    240             }
    241         });
    242         $.ajax({
    243             url: '../Ajax/OrganizationalStructureAjax.ashx',
    244             type: 'post',
    245             dataType: 'json',
    246             async: false,
    247             data: { 'ajaxMethod': 'GetjOrgChartJson', 'treeNodeID': treeNode.id },
    248             success: function (data) {
    249                 jQuery("#jOrgChart").empty();
    250                 var showlist = $("<ul id='org' style='display:none'></ul>");
    251                 showall(data, showlist);
    252                 
    253                 jQuery("#jOrgChart").append(showlist);
    254                 jQuery("#org").jOrgChart({
    255                     chartElement: '#jOrgChart',//指定在某个dom生成jorgchart
    256                     dragAndDrop: true //设置是否可拖动
    257                 });
    258             }
    259         });
    260         EngthControl();
    261        // var treeValue = treeNode.id + "," + treeNode.name;
    262         //alert(treeNode.id + "," + treeNode.name);
    263     };
    264 
    265 
    266     /**
    267  * 展开树节点的第一层且关闭其他节点
    268  */
    269     //function openFirstTreenode() {
    270     //    var tree = $.fn.zTree.getZTreeObj('treeDemo');
    271     //    tree.expandAll(tree);
    272     //    // 获取树对象
    273     //    var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    274     //    /* 获取所有树节点 */
    275     //    var nodes = treeObj.transformToArray(treeObj.getNodes());
    276     //    // 关闭所有节点
    277     //    //for (var i = 0, length_1 = nodes.length; i < length_1; i++) {
    278     //    //    treeObj.expandNode(nodes[i], false);//第二个参数为false证明是折叠
    279     //    //}
    280     //    //展开第一级节点
    281     //    treeObj.expandNode(nodes[0], true);//第二个参数为true证明是展开
    282     //}
    283 
    284     function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
    285        // alert("异步加载");
    286     }
    287     function showall(menu_list, parent) {
    288         (function (jQuery) {
    289             jQuery.each(menu_list, function (index, val) {
    290                 if (val.childrens.length > 0) {
    291 
    292                     var li = $("<li></li>");
    293                     li.append("<a href='javascript:void(0)' class='"+val.UNION_TYPE+"' onclick=getOrgId('" + val.UNION_CODE + "','" + val.UNION_TYPE+"')>" + val.UNION_NAME + "</a>").append("<ul></ul>").appendTo(parent);
    294                     //递归显示
    295                     showall(val.childrens, $(li).children().eq(1));
    296                 } else {
    297                     $("<li></li>").append("<a href='javascript:void(0)'  class='" + val.UNION_TYPE +"' onclick=getOrgId('" + val.UNION_CODE + "','" + val.UNION_TYPE +"')>" + val.UNION_NAME + "</a>").appendTo(parent);
    298                 }
    299             });
    300         })(jQuery)
    301     }
    302     //点击节点后统计该节点数据
    303     function getOrgId(UNION_CODE, UNION_NAME) {
    304         if (UNION_CODE!="") {
    305         $.ajax({
    306             url: '../Ajax/OrganizationalStructureAjax.ashx',
    307             type: 'post',
    308             dataType: 'json',
    309             async: false,
    310             data: { 'ajaxMethod': 'Summary', 'treeNodeID': UNION_CODE },
    311             success: function (data) {
    312 
    313                 $("#jcghs").text(data.jcghs == "" ? 0 : data.jcghs);
    314                 $("#fhs").text(data.fhs == "" ? 0 : data.fhs);
    315                 $("#hys").text(data.hys == "" ? 0 : data.hys);
    316                 $("#nxs").text(data.nxs == "" ? 0 : data.nxs);
    317                 $("#vxs").text(data.vxs == "" ? 0 : data.vxs);
    318                 $("#zzs").text(data.zzs == "" ? 0 : data.zzs);
    319                 $("#zks").text(data.zks == "" ? 0 : data.zks);
    320                 $("#bks").text(data.bks == "" ? 0 : data.bks);
    321                 $("#shyjss").text(data.shyjss == "" ? 0 : data.shyjss);
    322                 $("#bsyjss").text(data.bsyjss == "" ? 0 : data.bsyjss);
    323                 $("#qtxls").text(data.qtxls == "" ? 0 : data.qtxls);
    324             }
    325             });
    326         }
    327         else {
    328             //展示(遍历该节点下的数据)
    329             
    330             //var htmlnode = "<td class='node-container' id='3' colspan='2'><table cellpadding='0' cellspacing='0' border='0'><tbody><tr class='node - cells'><td class='node - cell' colspan='2'><div class='node' style='height: 48px;  20px; '><a href='javascript: void (0)' class='3' onclick='getOrgId('', '3')'>...</a></div></td></tr></tbody></table></td>";
    331 
    332             //$('.node-cells .node-cell .node a').find(function () { return this.classNmae == '3' && this.innerHTML == '...'; }).each(function () {
    333             //    $(this).parents('.node-container:first').after(htmlnode);
    334             //});
    335         }
    336     }
    337     function jc_click() {
    338         $("#org").remove();
    339         $(".jOrgChart").remove();
    340         jOrgChart(false);
    341     }
    342     function hf_click() {
    343         $("#org").remove();
    344         $(".jOrgChart").remove();
    345         jOrgChart(true);
    346     }
    347     function hy_click() {
    348        // var htmlline = "<td class='node-container' id='3' colspan='2'>< table cellpadding = '0' cellspacing = '0' border = '0' > <tbody><tr class='node - cells'><td class='node - cell' colspan='2'><div class='node' style='height: 48px;  20px; '><a href='javascript: void (0)' class='3' onclick='getOrgId('', '3')'>...</a></div></td></tr></tbody></table ></td > ";
    349 
    350         
    351     }
    352 
    353     
    354 </script>
    
    
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace LY.CCPCUEP.Model.UEP
     7 {
     8     public class OrganizationFramework
     9     {
    10         public string UNION_CODE { get; set; }
    11         public string PARENT_ORGANIZATION_CODE { get; set; }
    12         public string UNION_NAME { get; set; }
    13         
    14         public string UNION_TYPE { get; set; }
    15         public List<OrganizationFramework> childrens { get; set; }
    16     }
    17 
    18 
    19 
    20 }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace LY.CCPCUEP.Model.UEP
    {
        public class OrganizatioTree
        {
            public string id { get; set; }
            public string pid { get; set; }
            public string name { get; set; }
    
          
            public List<OrganizatioTree> childrens { get; set; }
        }
    }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Reflection;//反射
     6 using System.Data;
     7 
     8 /// <summary>
     9 ///模块说明:数据结构化
    10 ///作者:xzx
    11 ///创建日期:2019-01-23
    12 /// </summary>
    13 namespace LY.CCPCUEP.Utility
    14 {
    15    public class CovertListHelper
    16     {
    17         //传递过来的类型必须与数据库类型保持一致问题
    18             public List<T> convertToList<T>(DataTable dt) where T : new()
    19             {
    20             
    21                 // 定义集合 
    22                 List<T> ts = new List<T>();
    23                 // 获得此模型的类型 
    24                 Type type = typeof(T);
    25                 //定义一个临时变量 
    26                 string tempName = string.Empty;
    27                 //遍历DataTable中所有的数据行  
    28                 foreach (DataRow dr in dt.Rows)
    29                 {
    30                     T t = new T();
    31                     // 获得此模型的公共属性 
    32                     PropertyInfo[] propertys = t.GetType().GetProperties();
    33                     //遍历该对象的所有属性 
    34                     foreach (PropertyInfo pi in propertys)
    35                     {
    36                         tempName = pi.Name;//将属性名称赋值给临时变量   
    37                         //检查DataTable是否包含此列(列名==对象的属性名)     
    38                         if (dt.Columns.Contains(tempName))
    39                         {
    40                             // 判断此属性是否有Setter   
    41                             if (!pi.CanWrite) continue;//该属性不可写,直接跳出   
    42                             //取值   
    43                             object value = dr[tempName];
    44                             //如果非空,则赋给对象的属性   
    45                             if (value != DBNull.Value)
    46 
    47                                 pi.SetValue(t, value, null);
    48                         }
    49                 }
    50                     //对象添加到泛型集合中 
    51                     ts.Add(t);
    52                 }
    53                 return ts;
    54             }
    55     }
    56 }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using LY.CCPCUEP.Model.UEP;
    using LY.CCPCUEP.BLL.UEP;
    using Newtonsoft.Json;
    using LY.CCPCUEP.Utility;
    
    /// <summary>
    ///模块说明:ajax数据交互,数据结构化
    ///作者:夏志雄
    ///创建日期:2019-01-23
    /// </summary>
    
    namespace LY.CCPCUEP.UI.Uep.Ajax
    {
    
        /// <summary>
        /// OrganizationalStructureAjax1 的摘要说明
        /// </summary>
        public class OrganizationalStructureAjax : IHttpHandler
        {
            private HttpContext context;
            DataTable dt = new DataTable();
            public string strConn = "";
            public string treeNodeID = "";
            public string NodeID = "";
            public string id = "";
            public string reviseOption = "";
            string ajaxMethod = "";
            bool IsShow = false;
            public void ProcessRequest(HttpContext context)
            {
                this.context = context;
                id = context.Request.Form["id"];
                NodeID = context.Request.Form["NodeID"];//初始id
                treeNodeID = context.Request.Form["treeNodeID"];//点击节点id
                //初始化节点为空赋值顶级节点
                if (string.IsNullOrEmpty(treeNodeID))
                {
                    treeNodeID = "234E45F0077881AAE0430AA3034681AA";
                }
                ajaxMethod = context.Request.Form["ajaxMethod"];//取得前台ajax请求的方法名称
                if (!string.IsNullOrEmpty(context.Request.Form["IsShow"]))
                {
                    IsShow = bool.Parse(context.Request.Form["IsShow"]);//节点是否展示
                }
                System.Reflection.MethodInfo method = this.GetType().GetMethod(ajaxMethod);
                if (method != null)
                {
                    method.Invoke(this, new object[] { });//通过方法名称指向对应的方法
                }
            }
         
    
            /// <summary>
            /// 疑问联系人
            /// </summary>
            public void iphone()
            {
                T_UEP_DB_ZTREEBLL bll = new T_UEP_DB_ZTREEBLL();
                var rhts = bll.Getrhts().Tables[0].Rows[0]["lookup_value_name"].ToString();
                context.Response.Write(JsonConvert.SerializeObject(rhts));
            }
    
            //统计
            public void Summary()
            {
    
                DataTable dt = new DataTable();
                T_UEP_DB_ZTREEBLL bll = new T_UEP_DB_ZTREEBLL();
                
                DataTable xbdt = bll.Getxbs(treeNodeID).Tables[0];
                DataTable xldt = bll.Getxls(treeNodeID).Tables[0];
                object summaryData = null;
                summaryData = new
                {
                    jcghs = bll.Getjcghs(treeNodeID).Tables[0].Rows[0]["基层工会数"].ToString(),
                    fhs = bll.Getfhs(treeNodeID).Tables[0].Rows[0]["分会数"].ToString(),
                    hys = bll.Gethys(treeNodeID).Tables[0].Rows[0]["会员数"].ToString(),
                    nxs = xbdt.Rows[0]["男性数"].ToString(),
                    vxs = xbdt.Rows[0]["女性数"].ToString(),
                    zzs = xldt.Rows.Count > 0 ? xldt.Select("LOOKUP_VALUE_NAME='中等专业学校(中专)'")[0][1].ToString() : "",
                    zks = xldt.Rows.Count > 0 ? xldt.Select("LOOKUP_VALUE_NAME='大学专科'")[0][1].ToString() : "",
                    bks = xldt.Rows.Count > 0 ? xldt.Select("LOOKUP_VALUE_NAME='大学本科'")[0][1].ToString() : "",
                    shyjss = xldt.Rows.Count > 0 ? xldt.Select("LOOKUP_VALUE_NAME='硕士研究生'")[0][1].ToString() : "",
                    bsyjss = "",//博士
                    qtxls = xldt.Rows.Count > 0 ? xldt.Select("LOOKUP_VALUE_NAME='小学/初中(职业初中)/高中(职业高中)/技工学校/无学历/其他学历'")[0][1].ToString() : "",
                };
    
                //基层工会数
                context.Response.Write(JsonConvert.SerializeObject(summaryData));
    
            }
            /// <summary>
            /// 异步加载当前节点的子节点
            /// </summary>
            public void AnsyData()
            {
                List<object> lsNode = new List<object>();
                try
                {
                    
                    T_UEP_DB_ZTREEBLL dll = new T_UEP_DB_ZTREEBLL();
                    DataSet ds = dll.GetZtree("", false);
                    dt = ds.Tables[0];
                    DataTable dataSource = new DataTable();
                    DataView dv = dt.DefaultView;
                    if (!string.IsNullOrEmpty(id))
                    {
                        dv.RowFilter = "PARENT_ORGANIZATION_CODE='" + id + "'";
                    }
                    //1.过滤后直接获取DataTable 
                    DataTable newTable1 = dv.ToTable();
                    lsNode = getList(newTable1);
                    context.Response.Write(JsonConvert.SerializeObject(lsNode));
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
    
    
    
    
    
    
    
            /// <summary>
            /// 把数据形式转换成zTree的json数据格式
            /// </summary>
            /// <param name="table"></param>
            /// <returns></returns>
            public List<object> getList(DataTable table)
            {
                try
                {
                    List<object> lsNode = new List<object>();
                    bool isParent = true;
                    bool iszk = true;
                    foreach (DataRow row in table.Rows)
                    {
                        string iconstr = string.Empty;
                        if (row["UNION_TYPE"].ToString() == "1")
                        {
                            iconstr = "../Images/8_open.png";
                            iszk = true;
                        }
                        else if (row["UNION_TYPE"].ToString() == "2")
                        {
                            iconstr = "../Images/1_open.png";
                            iszk = false;
                        }
                        else if (row["UNION_TYPE"].ToString() == "3")
                        {
                            iconstr = "../Images/6_open.png";
                            iszk = false;
                        }
                        if (isParentTrue(row["UNION_CODE"].ToString(), table))
                            isParent = true;
                        else
                            isParent = false;
                        var zTreeData = new
                        {
                            //ID
                            id = row["UNION_CODE"],
                            //父ID
                            pId = row["PARENT_ORGANIZATION_CODE"].ToString(),
                            //名称
                            name = row["UNION_NAME"],
                            //图标
                            icon = iconstr,
                            isParent = isParent,//是否拥有子节点
                            open = iszk,
                        };
                        lsNode.Add(zTreeData);
                    }
                    return lsNode;
                }
                catch (Exception ex)
                {
    
                    throw;
                }
            }
    
    
            /// <summary>
            /// 判断当前节点是否还有子节点
            /// </summary>
            /// <param name="ParentId">父节点Id</param>
            /// <returns>bool类型</returns>
            public bool isParentTrue(string ParentId, DataTable table)
            {
                try
                {
                    T_UEP_DB_ZTREEBLL dll = new T_UEP_DB_ZTREEBLL();
                    DataRow[] dr = table.Select("PARENT_ORGANIZATION_CODE='" + ParentId + "'");
                    dt = ToDataTable(dr);
                    if (dt == null)
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                catch (Exception ex)
                {
    
                    throw;
                }
            }
    
    
            private DataTable ToDataTable(DataRow[] rows)
            {
                if (rows == null || rows.Length == 0) return null;
                DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
                foreach (DataRow row in rows)
                {
    
                    tmp.ImportRow(row); // 将DataRow添加到DataTable中
                }
                return tmp;
            }
            public List<OrganizationFramework> Main = new List<OrganizationFramework>();
            public List<OrganizatioTree> TreeMain = new List<OrganizatioTree>();
            /// <summary>
            /// 获取所有的组织架构数据
            /// </summary>
            /// <returns></returns>
            public List<OrganizationFramework> GetAllFramework(string treeNodeID)
            {
                List<OrganizationFramework> listMenuS = new List<OrganizationFramework>();
                OrganizationFramework of = new OrganizationFramework();
                T_UEP_DB_ZTREEBLL dll = new T_UEP_DB_ZTREEBLL();
                List<object> lsNode = new List<object>();
                dt = dll.GetZtree(treeNodeID, IsShow).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    CovertListHelper co = new CovertListHelper();
                    listMenuS = co.convertToList<OrganizationFramework>(dt);
                }
                return listMenuS;
            }
            /// <summary>
            /// 获取所有的树形框架数据
            /// </summary>
            /// <returns></returns>
            public List<OrganizatioTree> GetAllTree()
            {
                List<OrganizatioTree> listMenuS = new List<OrganizatioTree>();
                OrganizatioTree of = new OrganizatioTree();
                T_UEP_DB_ZTREEBLL dll = new T_UEP_DB_ZTREEBLL();
                dt = dll.GetZtree("", IsShow).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    listMenuS = ConvertTo(dt);
                }
                return listMenuS;
            }
    
            //使用Linq的ToList方法,非泛型
            public static List<OrganizatioTree> ConvertTo(DataTable dt)
            {
                if (dt == null) return null;
                if (dt.Rows.Count <= 0) return null;
                List<OrganizatioTree> list = new List<OrganizatioTree>();
                list = (from DataRow dr in dt.Rows
                        select new OrganizatioTree
                        {
                            id = dr["UNION_CODE"].ToString(),
                            pid = dr["PARENT_ORGANIZATION_CODE"].ToString(),
                            name = dr["UNION_NAME"].ToString(),
    
                        }).ToList();
                return list;
            }
    
    
            private DataTable getData()
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("UNION_CODE", typeof(Guid));
                dt.Columns.Add("UNION_NAME", typeof(string));
                dt.Columns.Add("PARENT_ORGANIZATION_CODE", typeof(Guid));
    
                dt.Rows.Add("1EF13BE6011A6733E0530100007F80DF", "天下会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("2EF13BE6011A6733E0530100007F80DF", "东风汽车有限公司", "10F13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("3EF13BE6011A6733E0530100007F80DF", "风神襄阳工会", "2EF13BE6011A6733E0530100007F80DF");
    
                dt.Rows.Add("4EF13BE6011A6733E0530100007F80DF", "大连工厂工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("5EF13BE6011A6733E0530100007F80DF", "PV机关工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("6EF13BE6011A6733E0530100007F80DF", "发动机分公司工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("7EF13BE6011A6733E0530100007F80DF", "广州风神工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("8EF13BE6011A6733E0530100007F80DF", "研发采购工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("9EF13BE6011A6733E0530100007F80DF", "郑州工厂工会", "2EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("1AF13BE6011A6733E0530100007F80DF", "工厂11", "9EF13BE6011A6733E0530100007F80DF");
                dt.Rows.Add("1BF13BE6011A6733E0530100007F80DF", "工厂22", "9EF13BE6011A6733E0530100007F80DF");
                return dt;
            }
    
    
            //父子级递归
            public void AddMenu(List<OrganizationFramework> all, OrganizationFramework curItem)
            {
                //第一层不过滤,第二层过滤为5行,第三层过滤为5行,将三层的数据拼接一起
                List<OrganizationFramework> childItems = all.Where(ee => ee.PARENT_ORGANIZATION_CODE == curItem.UNION_CODE).ToList(); //得到子节点
                if (curItem.UNION_TYPE == "1" || curItem.UNION_TYPE == "2")
                {
                    List<OrganizationFramework> l = new List<OrganizationFramework>();
                    if (childItems.Count > 3 && curItem.UNION_TYPE == "1")
                    {
                        OrganizationFramework ellipsisData = new OrganizationFramework
                        {
                            UNION_CODE = "",
                            PARENT_ORGANIZATION_CODE = "",
                            UNION_NAME = "...",
                            UNION_TYPE = "2",
                            childrens = new List<OrganizationFramework>(),
                        };
                        l.Add(ellipsisData);
                    }
                    if (childItems.Count > 3 && curItem.UNION_TYPE == "2")
                    {
                        OrganizationFramework ellipsisData = new OrganizationFramework
                        {
                            UNION_CODE = "",
                            PARENT_ORGANIZATION_CODE = "",
                            UNION_NAME = "...",
                            UNION_TYPE = "3",
                            childrens = new List<OrganizationFramework>(),
                        };
                        l.Add(ellipsisData);
                    }
                    l.InsertRange(0, childItems.Take(3));//序列连续的数量
                    childItems = l;
                }
    
                curItem.childrens = childItems; //将子节点加入
                 //遍历子节点,进行递归,寻找子节点的子节点
                foreach (var subItem in childItems)
                {
                    AddMenu(all, subItem);
                }
            }
    
            //父子级递归
            public void AddTreeMenu(List<OrganizatioTree> all, OrganizatioTree curItem)
            {
                List<OrganizatioTree> childItems = all.Where(ee => ee.pid == curItem.id).ToList(); //得到子节点
                curItem.childrens = childItems; //将子节点加入
                //遍历子节点,进行递归,寻找子节点的子节点
                foreach (var subItem in childItems)
                {
                    AddTreeMenu(all, subItem);
                }
            }
    
            /// <summary>
            /// 初始化第一次节点加载
            /// </summary>
            public void FirstAnsyData()
            {
                try
                {
                    List<object> lsNode = new List<object>();
                    T_UEP_DB_ZTREEBLL dll = new T_UEP_DB_ZTREEBLL();
                    dt = dll.GetZtree("", IsShow).Tables[0];
                    DataRow[] dr = dt.Select("PARENT_ORGANIZATION_CODE is null ");
                    dt = ToDataTable(dr);
                    lsNode = getList(dt);
                    context.Response.Write(JsonConvert.SerializeObject(lsNode));
                }
                catch (Exception)
                {
    
                    throw;
                }
    
            }
            /// <summary>
            /// 初始化 
            /// </summary>
            public void GetjOrgChartJson()
            {
                List<OrganizationFramework> allMenu = GetAllFramework(""); //得到数据
                if (!string.IsNullOrEmpty(treeNodeID))
                {
                    OrganizationFramework organizationFramework = allMenu.Where(x => x.UNION_CODE == treeNodeID).FirstOrDefault();
                    if (organizationFramework == null)
                    {
                        organizationFramework = new OrganizationFramework();
                    }
                    Main.Add(organizationFramework);//根节点
                    OrganizationFramework organizationFrameworkMain = allMenu.Where(x => x.UNION_CODE == treeNodeID).FirstOrDefault();
                    if (organizationFrameworkMain == null)
                    {
                        organizationFrameworkMain = new OrganizationFramework();
                    }
                    AddMenu(allMenu, organizationFrameworkMain);//递归
    
                }
                else
                {
                    OrganizationFramework organizationFramework = allMenu.Where(x => x.PARENT_ORGANIZATION_CODE == null).FirstOrDefault();
                    if (organizationFramework == null)
                    {
                        organizationFramework = new OrganizationFramework();
                    }
                    Main.Add(organizationFramework);//根节点
                    OrganizationFramework organizationFrameworkMain = allMenu.Where(x => x.UNION_CODE == Main.ElementAt(0).UNION_CODE).FirstOrDefault();
                    // OrganizationFramework organizationFrameworkMain = allMenu.Where(x => x.UNION_TYPE == "1").FirstOrDefault();
                    if (organizationFrameworkMain == null)
                    {
                        organizationFrameworkMain = new OrganizationFramework();
                    }
                    AddMenu(allMenu, organizationFrameworkMain);//递归
                }
    
                //结果树形结构
                List<OrganizationFramework> treeMenu = Main;
                string jOrgChartJson = JsonConvert.SerializeObject(treeMenu);
                
                context.Response.Write(jOrgChartJson);
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
    
        }
    }
    
    
  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/xiaz/p/10309954.html
Copyright © 2011-2022 走看看