//无限接循环子节点添加到根节点下面 private void ForeachPropertyNode(PP_DepartmentInfo node, string pid, DeptInfoList nodes) { foreach (DeptInfo tempNode in nodes) { if (tempNode.ParentDeptID == pid) { PP_DepartmentInfo pp_department = CreateDepartmentInfoSource(tempNode); ForeachPropertyNode(pp_department, pp_department.GUID, nodes); node.Children.Add(pp_department); } } }
private void OrganizationClientOnGetDeptInfos(DeptInfoList pDeptInfos) { try { var deptinfos = pDeptInfos; if (deptinfos == null) { throw new Exception("组织结构初始化失败。"); } if (deptinfos.Count == 0) { return; } DeptInfo foundRoot = (from i in deptinfos where i.DistrictCode == _areaCode && i.IsOrganization select i).FirstOrDefault(); if (foundRoot == null) { return; } PP_DepartmentInfoList.Clear(); PP_DepartmentInfo rootdepartment = CreateDepartmentInfoSource(foundRoot); ForeachPropertyNode(rootdepartment, rootdepartment.GUID, pDeptInfos); PP_DepartmentInfoList.Add(rootdepartment); this.tv_PersonPlan.ItemsSource = null; this.tv_PersonPlan.ItemsSource = PP_DepartmentInfoList; } catch { ////LogHelper.WriteLog("初始化组织结构", Utile.GetExceptionContext(ex)); //OnInitializeCompleted(false); } finally { //if (!completed) // OnInitializeCompleted(false); } }