Ejemplo n.º 1
0
        /// <summary>
        /// 获取树形结构的机构列表
        /// </summary>
        public List <OUNodeInfo> GetTree()
        {
            List <OUNodeInfo> arrReturn = new List <OUNodeInfo>();
            string            sql       = string.Format("Select * From {0} Order By PID, Name ", tableName);

            DataTable dt   = base.SqlTable(sql);
            string    sort = string.Format("{0} {1}", GetSafeFileName(sortField), isDescending ? "DESC" : "ASC");

            DataRow[] dataRows = dt.Select(string.Format(" PID = {0} ", -1), sort);
            for (int i = 0; i < dataRows.Length; i++)
            {
                string     id           = dataRows[i]["ID"].ToString();
                OUNodeInfo menuNodeInfo = GetNode(id, dt);
                arrReturn.Add(menuNodeInfo);
            }

            return(arrReturn);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取树形结构的机构列表
        /// </summary>
        public List <OUNodeInfo> GetTree(IsDelete isDelete = IsDelete.否, IsForbid isForbid = IsForbid.否)
        {
            List <OUNodeInfo> arrReturn = new List <OUNodeInfo>();
            string            sql       = string.Format("Select * From {0} Order By Pid, Name ", tableName);

            DataTable dt   = base.SqlTable(sql);
            string    sort = string.Format("{0} {1}", GetSafeFileName(sortField), isDescending ? "DESC" : "ASC");

            DataRow[] dataRows = dt.Select(string.Format(" Pid = {0} and (IsDelete = {1} or 0 = {1}) and (IsForbid = {2} or 0 = {2})", -1, (short)isDelete, (short)isForbid), sort);
            for (int i = 0; i < dataRows.Length; i++)
            {
                Int32      id           = dataRows[i]["Id"].ToString().ToInt32();
                OUNodeInfo menuNodeInfo = GetNode(id, dt);
                arrReturn.Add(menuNodeInfo);
            }

            return(arrReturn);
        }
Ejemplo n.º 3
0
        private List <OUNodeInfo> GetRecursionOu(DataTable dt, Int32 mainOUId, IsDelete isDelete = IsDelete.否, IsForbid isForbid = IsForbid.否)
        {
            List <OUNodeInfo> arrReturn = new List <OUNodeInfo>();
            string            sort      = string.Format("{0} {1}", GetSafeFileName(sortField), isDescending ? "DESC" : "ASC");

            DataRow[] dataRows = dt.Select(string.Format(" Pid = {0} and (IsDelete = {1} or 0 = {1}) and (IsForbid = {2} or 0 = {2})", mainOUId, (short)isDelete, (short)isForbid), sort);
            for (int i = 0; i < dataRows.Length; i++)
            {
                Int32      Id           = dataRows[i]["Id"].ToString().ToInt32();
                OUNodeInfo menuNodeInfo = GetNode(Id, dt);
                arrReturn.Add(menuNodeInfo);

                // 判断是否存在子节点,如果存在递归
                DataRow[] dataRowsChildNodes = dt.Select(string.Format(" Pid = {0} and (IsDelete = {1} or 0 = {1}) and (IsForbid = {2} or 0 = {2})", Id, (short)isDelete, (short)isForbid), sort);
                if (dataRowsChildNodes.Length > 0)
                {
                    menuNodeInfo.Children = GetRecursionOu(dt, Id);
                }
            }

            return(arrReturn);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取集团和公司的树形结构列表
        /// </summary>
        /// <returns></returns>
        public List <OUNodeInfo> GetGroupCompanyTree()
        {
            List <OUNodeInfo> list = new List <OUNodeInfo>();

            //顶级OU的PID=-1 为集团OU节点
            List <OUInfo> ouList = GetTopGroup();

            foreach (OUInfo groupOU in ouList)
            {
                if (groupOU != null)
                {
                    OUNodeInfo groupNodeInfo = new OUNodeInfo(groupOU);

                    List <OUInfo> companyList = GetAllCompany(groupOU.ID);
                    foreach (OUInfo info in companyList)
                    {
                        groupNodeInfo.Children.Add(new OUNodeInfo(info));
                    }
                    list.Add(groupNodeInfo);
                }
            }
            return(list);
        }