樹形插件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             /*width: 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="width: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="width: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="width: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; width: 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; width: 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;
            }
        }

    }
}

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM