private void ProcessCalculatedMembers(Line l, List <CubeDataNumeric> data) { var hasCalculatedMembers = false; foreach (var ll in l.Levels) { foreach (var m in ll.FUniqueNamesArray.Values) { if (m is CalculatedMember) { hasCalculatedMembers = true; break; } } } if (!hasCalculatedMembers) { return; } var data2 = new List <CubeDataNumeric>(); foreach (var d in data) { var mm = l.fM.DecodeLineIdx(d.LineIdx); var lm = new List <Member>(mm.Length); for (var i = 0; i < mm.Length; i++) { lm.Add(l.Levels[i].GetMemberByID(mm[i])); } var a = new ICubeAddress(FGrid, lm); a.Measure = l.Measure; a.MeasureMode = l.fMode; foreach (var ll in l.Levels) { foreach (var m in ll.FUniqueNamesArray.Values) { if (m is CalculatedMember) { a.AddMember(m); object v; CellFormattingProperties f; if (DoCalculate(FGrid, a, out v, out f)) { var dn = new CubeDataNumeric(); dn.FormattedValue = f.FormattedValue; dn.LineIdx = a.FLineIdx; dn.MemberIDs = l.fM.DecodeLineIdx(dn.LineIdx); dn.Value = Convert.ToDouble(v); data2.Add(dn); } } } } } data.AddRange(data2); }
internal ChartCellDetails(OlapControl grid, List <Level> clue, int[] memberIDs) { fGrid = grid; Address = new ICubeAddress(fGrid); for (var i = 0; i < clue.Count; i++) { Address.AddMember(clue[i].GetMemberByID(memberIDs[i])); } }
public ICubeAddress GetCubeAddress(OlapControl grid) { var a = new ICubeAddress(grid); if (!string.IsNullOrEmpty(MeasureUniqueName)) { a.Measure = grid.Measures.Find(MeasureUniqueName); if (a.Measure == null) { a.Measure = grid.Measures.FindByDisplayName(MeasureDisplayName); } if (a.Measure != null) { a.MeasureMode = a.Measure.ShowModes.Find(MeasureMode); } } if (Levels != null) { for (var i = 0; i < Levels.Length; i++) { var l = grid.Dimensions.FindLevel(Levels[i]); Member m = null; if (l != null) { m = l.FindMember(Members[i]); } if (m != null) { a.AddMember(m); } } } a.Tag = Tag; return(a); }