예제 #1
0
        public static DrillAction FromString(OlapControl grid, string str)
        {
            var da = new DrillAction();
            var sb = str.Split(new[] { __MAIN_SEP }, StringSplitOptions.None);

            da.Level       = grid.Dimensions.FindLevel(sb[0]);
            da.ParentLevel = grid.Dimensions.FindLevel(sb[1]);
            if (da.Level == null || da.ParentLevel == null)
            {
                return(null);
            }
            var m = sb[2].Split(new[] { __INNER_SEP }, StringSplitOptions.None);

            foreach (var s in m)
            {
#if DEBUG
                if (s == "[Product].[All Products].[Drink].[Alcoholic Beverages]")
                {
                }
#endif
                if (string.IsNullOrEmpty(s))
                {
                    continue;
                }
                var member = grid.FindMemberByName(s);
                if (member == null)
                {
                    var tm = grid.Measures.Find(s);
                    if (tm == null)
                    {
                        return(null);
                    }

                    member = tm.Member;
                    if (member == null)
                    {
                        return(null);
                    }
                }
                da.Members.AddLast(member);
            }
            m = sb[3].Split(new[] { __INNER_SEP }, StringSplitOptions.None);

            if (da.IsAllDrilled)
            {
                da.DrillUps = new HashSet <Member>();
            }

            foreach (var s in m)
            {
                if (string.IsNullOrEmpty(s))
                {
                    continue;
                }

                var member = grid.FindMemberByName(s);
                if (member == null)
                {
                    member = grid.Measures.Find(s).Member;
                    if (member == null)
                    {
                        return(null);
                    }
                }

                if (da.DrillUps == null)
                {
                    da.DrillUps = new HashSet <Member>();
                }
                da.DrillUps.Add(member);
            }
            return(da);
        }
예제 #2
0
 /// <summary>
 ///     Searches for the hierarchy member by its name in all initialized Grid
 ///     hierarchies.
 /// </summary>
 public Member Member(string MemberName)
 {
     return(fGrid.FindMemberByName(MemberName));
 }