示例#1
0
 private void PopulateAncestors(List <ExtendedHierarchyMember> members)
 {
     foreach (ExtendedHierarchyMember member in members.Where(x => x.MemberType == MemberType.Member))
     {
         int cumulativeOperator = 1;
         HierarchyMemberAncestor hierarchyMemberAncestor = new HierarchyMemberAncestor()
         {
             Id = member.Id, AncestorId = member.Id, Level = member.Level, Operator = 1
         };
         memberAncestors.Add(hierarchyMemberAncestor);
         List <int> ancestors        = metaDataManager.GetAncestors(member.Lineage);
         int        levelCounter     = hierarchyMemberAncestor.Level;
         int        previousMemberID = member.Id;
         foreach (int ancestor in ancestors)
         {
             levelCounter       -= 1;
             cumulativeOperator *= memberOperators[previousMemberID];
             memberAncestors.Add(new HierarchyMemberAncestor()
             {
                 Id = member.Id, AncestorId = ancestor, Level = levelCounter, Operator = cumulativeOperator
             });
             previousMemberID = ancestor;
         }
     }
 }
示例#2
0
        protected override void PopulateDisplayMembers()
        {
            List <T>        parents         = new List <T>();
            MetaDataManager metaDataManager = new MetaDataManager();

            if (typeof(T).Equals(typeof(ExtendedHierarchyMember)))
            {
                foreach (int selectedMember in SelectedMembers.Distinct())
                {
                    T member = Members.FirstOrDefault(x => x.Id == selectedMember);
                    if (member != null)
                    {
                        parents.Add(member);
                        List <int> ancestors = metaDataManager.GetAncestors((member as ExtendedHierarchyMember).Lineage);
                        List <ExtendedHierarchyMember> members = (Members as List <ExtendedHierarchyMember>).Where(x => ancestors.Contains(x.Id) && x.MemberType == MemberType.Rollup).ToList();
                        if (members != null && members.Count > 0)
                        {
                            parents.AddRange(members as List <T>);
                        }
                    }
                }
            }
            //else if (typeof(T).Equals(typeof(TimeHierarchy)))
            //{
            //    foreach (int selectedMember in SelectedMembers.Distinct())
            //    {
            //        T member = Members.FirstOrDefault(x => x.Id == selectedMember);
            //        if (member != null)
            //        {
            //            parents.Add(member);
            //            List<int> ancestors = metaDataManager.GetAncestors((member as TimeHierarchy).Lineage);
            //            List<TimeHierarchy> members = (Members as List<TimeHierarchy>).Where(x => ancestors.Contains(x.Id) && x.Level < 4).ToList();
            //            if (members != null && members.Count > 0)
            //            {
            //                parents.AddRange(members as List<T>);
            //            }
            //        }
            //    }
            //}
            DisplayMembers = parents.Distinct();
        }