public CellInfo(CellData cell_descr, MemberInfo column, MemberInfo row, IList<MemberInfo> invisibleCoords) { if (cell_descr == null) { throw new ArgumentNullException("cell_descr"); } if (column == null) { throw new ArgumentNullException("column"); } if (row == null) { throw new ArgumentNullException("row"); } if (invisibleCoords == null) { throw new ArgumentNullException("invisibleCoords"); } CellDescr = cell_descr; ColumnMember = column; RowMember = row; InvisibleCoords = invisibleCoords; }
private void BuildDescription(CellSet cs) { if (cs != null) { if (cs.OlapInfo != null && cs.OlapInfo.CubeInfo != null && cs.OlapInfo.CubeInfo.Cubes != null && cs.OlapInfo.CubeInfo.Cubes.Count > 0) { m_CellSet.CubeName = cs.OlapInfo.CubeInfo.Cubes[0].CubeName; } DateTime start = DateTime.Now; int i = 0; // Оси foreach(Axis axis in cs.Axes) { AxisData axis_data = BuildAxisDescription(axis); axis_data.AxisNum = i; m_CellSet.Axes.Add(axis_data); i++; } System.Diagnostics.Debug.WriteLine("CellSetData building AXES time: " + (DateTime.Now - start).ToString()); // Ось фильтров - пока эта информация не нужна // cs_descr.FilterAxis = BuildAxisDescription(cs.FilterAxis); DateTime start1 = DateTime.Now; if (cs.Axes.Count == 1) { for (int col = 0; col < cs.Axes[0].Positions.Count; col++) { CellData cell_descr = new CellData(); cell_descr.Axis0_Coord = col; cell_descr.Axis1_Coord = -1; cell_descr.Value = GetValue(col); m_CellSet.Cells.Add(cell_descr); } } if (cs.Axes.Count >= 2) { for(int col = 0; col < cs.Axes[0].Positions.Count; col++) { for (int row = 0; row < cs.Axes[1].Positions.Count; row++) { CellData cell_descr = new CellData(); cell_descr.Axis0_Coord = col; cell_descr.Axis1_Coord = row; cell_descr.Value = GetValue(col, row); m_CellSet.Cells.Add(cell_descr); } } } System.Diagnostics.Debug.WriteLine("CellSetData building CELLS time: " + (DateTime.Now - start1).ToString()); } }
// Пока информация о FilterAxis не нужна //AxisData m_FilterAxis = null; //public AxisData FilterAxis //{ // get { return m_FilterAxis; } // set { m_FilterAxis = value; } //} public CellData GetCellDescription(int col) { //if (col >= 0) { foreach (CellData cell in Cells) { if (cell.Axis0_Coord == col) { return cell; } } } // Ячейка не найдена. Возможно это ячейка, которой не существует в кубе (null) // При некоторых настройках безопасности в CellSet есть мемберы а коллекция Cells пустая. var cell_empty = new CellData() { Axis0_Coord = col}; return cell_empty; }
internal void DeserializeData(string DataStr) { var cellDatas = Jayrock.Json.Conversion.JsonConvert.Import(DataStr) as JsonArray; var Values = cellDatas.GetArray(0); var DisplayValues = cellDatas.GetArray(1); var Styles = cellDatas.GetArray(2); int axes0Len = this.Axes.Count > 0 ? this.Axes[0].Positions.Count : 0; int axes1Len = this.Axes.Count > 1 ? this.Axes[1].Positions.Count : 0; var PropNames = cellDatas[cellDatas.Length - 1] as JsonArray; int CellOrdinal = 0; int cellsCount = Values.Count; for (int j = 0; j < cellsCount; j++) { var cellData = new CellData(); cellData.Axis0_Coord = axes0Len > 0 ? j % axes0Len : -1; // axes0Len может быть 0 и при этом будет одна ячейка (дефолтная). И осей при этом в CellSet нету. cellData.Axis1_Coord = axes1Len > 0 ? j / axes0Len : -1; var cellValueData = new CellValueData(); var prop = new PropertyData("CellOrdinal", CellOrdinal); cellValueData.Properties.Add(prop); object val = ConvertFromJson(Values[CellOrdinal]); cellValueData.Value = val; prop = new PropertyData("VALUE", val); cellValueData.Properties.Add(prop); var props = cellDatas.GetArray(3 + Styles.GetInt32(CellOrdinal)); string FORMAT_STRING = null; for (int k = 0; k < PropNames.Length; k++) { var propName = PropNames[k].ToString(); //if (propName == "FORMAT_STRING") // FORMAT_STRING = (string)propval; prop = new PropertyData(propName, ConvertFromJson(props[k])); cellValueData.Properties.Add(prop); } //if (val == null) // cellValueData.DisplayValue = null; //else if (FORMAT_STRING != null) // cellValueData.DisplayValue = ((double)val).ToString(FORMAT_STRING); //else // cellValueData.DisplayValue = val.ToString(); cellValueData.DisplayValue = DisplayValues[CellOrdinal++].ToString(); prop = new PropertyData("FORMATTED_VALUE", cellValueData.DisplayValue); cellValueData.Properties.Add(prop); cellData.Value = cellValueData; Cells.Add(cellData); } }
public CellData GetCellDescription(int col, int row) { CellData cell = m_Cells2D[col, row]; if (cell == null) { if (col >= 0 && row >= 0) { foreach (CellData c in Cells) { if (c.Axis0_Coord == col && c.Axis1_Coord == row) { m_Cells2D.Add(c, col, row); return c; } } } } if (cell == null) { // Ячейка не найдена. Возможно это ячейка, которой не существует в кубе (null) // При некоторых настройках безопасности в CellSet есть мемберы а коллекция Cells пустая. cell = new CellData() { Axis0_Coord = col, Axis1_Coord = row }; } return cell; }