/// <summary> /// 获取指定分析列中某一行的数据 /// </summary> /// <typeparam name="T">数据的类型</typeparam> /// <param name="pTargetColumn">分析列</param> /// <param name="pRowIndex">行号,以0开始</param> /// <returns></returns> public T[] GetRowDataBy <T>(AnalysisColumn pTargetColumn, int pRowIndex) { var gridColumns = this.GetGridColumnBy(pTargetColumn); if (gridColumns != null && gridColumns.Length > 0 && this.Dataes != null && this.Dataes.Rows.Count > pRowIndex) { List <T> result = new List <T>(); // var dr = this.Dataes.Rows[pRowIndex]; foreach (var col in gridColumns) { if (dr[col.DataIndex] != DBNull.Value) { var temp = Convert.ChangeType(dr[col.DataIndex], typeof(T)); if (temp == null) { result.Add(default(T)); } else { result.Add((T)temp); } } else { result.Add(default(T)); } } // return(result.ToArray()); } // return(null); }
/// <summary> /// Add Columns to AnalysisResult object /// </summary> /// <param name="result"> /// <see cref="AnalysisResult"/> object /// </param> /// <returns> /// <see cref="AnalysisResult"/> updated object /// </returns> private AnalysisResult AddAnalysisResultColumns(AnalysisResult result) { foreach (AnalysisProcessingResultColumn resultColumn in resultColumns) { var col = new AnalysisColumn(resultColumn.ResultColumn, xCategoryArray); result.AddColumn(col); } return(result); }
/// <summary> /// 获取指定分析列的报表摘要 /// </summary> /// <param name="pTargetColumn">分析列</param> /// <returns></returns> public Dictionary <Column, Dictionary <ISummary, string> > GetSummaryBy(AnalysisColumn pTargetColumn) { var gridColumns = this.GetGridColumnBy(pTargetColumn); if (gridColumns != null && gridColumns.Length > 0 && this.ColumnSummaryValues != null) { var items = this.ColumnSummaryValues.Where(item => gridColumns.Contains(item.Key)).ToArray(); var result = new Dictionary <Column, Dictionary <ISummary, string> >(); foreach (var item in items) { result.Add(item.Key, item.Value); } // return(result); } return(null); }
/// <summary> /// 根据分析列找出所对应的表格列 /// </summary> /// <param name="pTargetColumn"></param> /// <returns></returns> private Column[] GetGridColumnBy(AnalysisColumn pTargetColumn) { if (pTargetColumn != null && this.GridColumnToAnalysisColumnMappings != null && this.GridColumnToAnalysisColumnMappings.ContainsValue(pTargetColumn)) { List <Column> gridColumns = new List <Column>(); foreach (var item in this.GridColumnToAnalysisColumnMappings) { if (item.Value == pTargetColumn) { gridColumns.Add(item.Key); } } return(gridColumns.ToArray()); } // return(null); }
/// <summary> /// 获取指定分析列的报表数据 /// </summary> /// <typeparam name="T">报表列数据的类型</typeparam> /// <param name="pTargetColumn">分析列</param> /// <returns> /// <para>如果列为度量列,则因为度量列会因为维度列的打横而拆分为多个,因此会返回多列数据,其中</para> /// <para>1.键为列对应的Ext的表格列</para> /// <para>2.值为该列下的所有数据</para> /// </returns> public Dictionary <Column, T[]> GetColumnDataBy <T>(AnalysisColumn pTargetColumn) { //获取分析列所对应的表格列 Column[] gridColumns = this.GetGridColumnBy(pTargetColumn); if (gridColumns != null && gridColumns.Length > 0) { //获取数据 Dictionary <Column, T[]> result = new Dictionary <Column, T[]>(); foreach (var col in gridColumns) { List <T> dataes = new List <T>(); foreach (DataRow dr in this.Dataes.Rows) { if (dr[col.DataIndex] != DBNull.Value) { var temp = Convert.ChangeType(dr[col.DataIndex], typeof(T)); if (temp == null) { dataes.Add(default(T)); } else { dataes.Add((T)temp); } } else { dataes.Add(default(T)); } } // result.Add(col, dataes.ToArray()); } //返回结果 return(result); } return(null); }
/// <summary> /// 获取指定列的值 /// </summary> /// <param name="pTargetColumn">指定的列</param> /// <returns>数据项值</returns> public T[] GetData <T>(AnalysisColumn pTargetColumn) { if (this.Dataes != null) { if (this.ColumnMappings != null && this.ColumnMappings.ContainsValue(pTargetColumn)) { var q = from m in this.ColumnMappings where m.Value == pTargetColumn select m.Key; var columns = q.ToArray(); if (columns != null && columns.Length > 0) { List <T> results = new List <T>(); foreach (var col in columns) { if (this.Dataes[col] != DBNull.Value) { var temp = Convert.ChangeType(this.Dataes[col], typeof(T)); if (temp == null) { results.Add(default(T)); } else { results.Add((T)temp); } } else { results.Add(default(T)); } } return(results.ToArray()); } } } return(null); }
/// <summary> /// 获取指定表格列的指定行的数据 /// </summary> /// <param name="pRowIndex"></param> /// <param name="pGridColumn"></param> /// <returns></returns> private object GetDataRowValue(DataTable pDataes, int pRowIndex, AnalysisColumn pGridColumn) { return(pDataes.Rows[pRowIndex][pGridColumn.ColumnID]); }
/// <summary> /// 设置值 /// </summary> /// <param name="pRow">数据行</param> /// <param name="pGridColumn">需要设置数据的表格列</param> /// <param name="pValue">值</param> private void SetDataRowValue(DataRow pRow, AnalysisColumn pGridColumn, object pValue) { pRow[pGridColumn.ColumnID] = pValue; }