private void chartControl1_ObjectHotTracked(object sender, DevExpress.XtraCharts.HotTrackEventArgs e) { SeriesPoint point = e.AdditionalObject as SeriesPoint; if (point != null) { PivotChartDataSourceRowItem coord = point.Tag as PivotChartDataSourceRowItem; ChartControl chart = (ChartControl)sender; PivotGridControl pivot = (PivotGridControl)chart.DataSource; PivotCellEventArgs info = pivot.Cells.GetCellInfo(coord.CellX, coord.CellY); PivotSummaryDataSource source = info.CreateSummaryDataSource(); string s = string.Empty; for (int i = 0; i < source.RowCount; i++) { s += "Country = " + source.GetValue(i, 0).ToString() + "\r\tYear = " + source.GetValue(i, 1).ToString() + "\r\tExtended Price = " + source.GetValue(i, 2).ToString() + "\r\n"; } toolTipController1.ShowHint(s); } else { toolTipController1.HideHint(); } }
// Returns a list of summary values against which // a Custom Total will be calculated. private ArrayList GetSummaryValues(PivotCellValueEventArgs e) { ArrayList values = new ArrayList(); // Creates a summary data source. PivotSummaryDataSource sds = e.CreateSummaryDataSource(); // Iterates through summary data source records // and copies summary values to an array. for (int i = 0; i < sds.RowCount; i++) { object value = sds.GetValue(i, e.DataField); if (value == null) { continue; } values.Add(value); } // Sorts summary values. values.Sort(); // Returns the summary values array. return(values); }
protected void ASPxPivotGrid1_CustomCellValue(object sender, DevExpress.Web.ASPxPivotGrid.PivotCellValueEventArgs e) { if (ReferenceEquals(e.RowCustomTotal, null)) { return; } if (e.RowCustomTotal.SummaryType == DevExpress.Data.PivotGrid.PivotSummaryType.Sum) { PivotSummaryDataSource ds = e.CreateSummaryDataSource(); decimal customSum = 0; for (int i = 0; i < ds.RowCount; i++) { customSum += Convert.ToDecimal(ds.GetValue(i, e.DataField)); } e.Value = customSum; } else if (e.RowCustomTotal.SummaryType == DevExpress.Data.PivotGrid.PivotSummaryType.Average) { PivotSummaryDataSource ds = e.CreateSummaryDataSource(); if (ds.RowCount == 0) { return; } decimal customAverage = 0; for (int i = 0; i < ds.RowCount; i++) { customAverage += Convert.ToDecimal(ds.GetValue(i, e.DataField)); } e.Value = customAverage / ds.RowCount; } }
void CalculateSalesPerProduct() { Dictionary <string, decimal> sales = new Dictionary <string, decimal>(); PivotSummaryDataSource ds = pivotGridControl1.CreateSummaryDataSource(); for (int i = 0; i < ds.RowCount; i++) { string product = (string)ds.GetValue(i, fieldProduct); decimal sale = (decimal)ds.GetValue(i, fieldRank); if (sales.ContainsKey(product)) { sales[product] += sale; } else { sales.Add(product, sale); } } totalSales = new List <decimal>(sales.Count); foreach (decimal value in sales.Values) { totalSales.Add(value); } totalSales.Sort(ReverseDecimalSort); }
private void simpleButton1_Click(object sender, System.EventArgs e) { Form2 form2 = new Form2(); ChartControl chart = form2.chartControl1; PivotSummaryDataSource ds = pivotGridControl1.CreateSummaryDataSource(); // Set the chart's datasource. chart.DataSource = ds; // Every month will be represented as a single series in the chart. chart.SeriesDataMember = "orderDate_Month"; // Every product will be a series point argument. chart.SeriesTemplate.ArgumentDataMember = "productName"; // Sum of products sold for this month will be a series point value. chart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "quantity_Sum" }); // Filter chart's datasource by category and year. chart.SeriesTemplate.FilterString = string.Format("[categoryName] = '{0}' And [orderDate_Year] = {1}", category, year); chart.SeriesSorting = SortingMode.Ascending; // Get the X-Axis of a Chart and adjust its labels. Axis xAxis = ((XYDiagram)chart.Diagram).AxisX; xAxis.Label.Angle = 45; xAxis.Label.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True; // Show the form. form2.Text = form2.Text.Replace("Category", category); form2.Text = form2.Text.Replace("Year", year.ToString()); form2.Show(); }
/// <summary> /// 포커스가 가 있는 그리드의 정보를 데이터 테이블로 변환한다. /// </summary> /// <param name="pGrid">그리드.</param> /// <returns>리턴값</returns> public static DataTable GetPivotFocusedCellInfo(PivotGridControl pGrid, DataReturnType type) { try { DataTable table = new DataTable(); if (type == DataReturnType.FocusedCell) { PivotSummaryDataSource dataSource = pGrid.Cells.GetFocusedCellInfo().CreateSummaryDataSource() as PivotSummaryDataSource; ITypedList list = dataSource as ITypedList; foreach (PropertyDescriptor property in list.GetItemProperties(null)) { table.Columns.Add(property.Name, property.PropertyType); } for (int rowIndex = 0; rowIndex < dataSource.RowCount; rowIndex++) { object[] values = new object[table.Columns.Count]; for (int columnIndex = 0; columnIndex < table.Columns.Count; columnIndex++) { values[columnIndex] = dataSource.GetValue(rowIndex, /*rowIndex*/ columnIndex); } table.Rows.Add(values); } } else if (type == DataReturnType.All) { PivotSummaryDataSource dataSourceAll = pGrid.CreateSummaryDataSource() as PivotSummaryDataSource; ITypedList listAll = dataSourceAll as ITypedList; foreach (PropertyDescriptor property in listAll.GetItemProperties(null)) { table.Columns.Add(property.Name, property.PropertyType); } for (int rowIndex = 0; rowIndex < dataSourceAll.RowCount; rowIndex++) { object[] values = new object[table.Columns.Count]; for (int columnIndex = 0; columnIndex < table.Columns.Count; columnIndex++) { values[columnIndex] = dataSourceAll.GetValue(rowIndex, /*rowIndex*/ columnIndex); } table.Rows.Add(values); } } return(table); } catch (Exception ex) { throw ex; } }
DataTable CreateIntermediateData(PivotGridControl pivotgridControl) { PivotSummaryDataSource summaryDataSource = pivotGridControl1.CreateSummaryDataSource(); DataTable intermediateDS = new DataTable(); intermediateDS.Columns.Add("Argument", typeof(string)); intermediateDS.Columns.Add("Series", typeof(string)); intermediateDS.Columns.Add("Value", typeof(decimal)); foreach (PivotSummaryDataRow record in summaryDataSource) { DataRow row = intermediateDS.NewRow(); if (pivotGridControl1.OptionsChartDataSource.ProvideDataByColumns) { List <string> rowValues = new List <string>(); foreach (PivotGridField rowField in pivotGridControl1.GetFieldsByArea(PivotArea.RowArea)) { rowValues.Add(record[rowField].ToString()); } row["Series"] = string.Join("|", rowValues); List <string> columnValues = new List <string>(); foreach (PivotGridField columnField in pivotGridControl1.GetFieldsByArea(PivotArea.ColumnArea)) { columnValues.Add(record[columnField].ToString()); } row["Argument"] = string.Join("|", columnValues); } else { List <string> columnValues = new List <string>(); foreach (PivotGridField columnField in pivotGridControl1.GetFieldsByArea(PivotArea.ColumnArea)) { columnValues.Add(record[columnField].ToString()); } row["Series"] = string.Join("|", columnValues); List <string> rowValues = new List <string>(); foreach (PivotGridField rowField in pivotGridControl1.GetFieldsByArea(PivotArea.RowArea)) { rowValues.Add(record[rowField].ToString()); } row["Argument"] = string.Join("|", rowValues); } row["Value"] = (decimal)record[pivotGridControl1.GetFieldByArea(PivotArea.DataArea, 0)]; intermediateDS.Rows.Add(row); } return(intermediateDS); }
private DataTable CreateSummaryTable(ASPxPivotGrid pivotGrid, PivotGridField sourceField, PivotGridField targetField, PivotGridField valueField, object sourceFieldValue) { PivotSummaryDataSource ds = ASPxPivotGrid1.CreateSummaryDataSource(); DataTable dt = new DataTable(); dt.Columns.Add("SourceField", typeof(string)); dt.Columns.Add("TargetField", typeof(string)); dt.Columns.Add("Value", typeof(decimal)); for (int i = 0; i < ds.RowCount; i++) { if (ds.GetValue(i, sourceField) == sourceFieldValue) { dt.Rows.Add(new object[] { ds.GetValue(i, sourceField), ds.GetValue(i, targetField), ds.GetValue(i, valueField) }); } } return(dt); }
private DataTable ConvertPivotSummaryDataSourceToDataTable(PivotSummaryDataSource source) { DataTable dt = new DataTable(); foreach (PropertyDescriptor _propertyDescriptor in source.GetItemProperties(null)) { dt.Columns.Add(_propertyDescriptor.Name, _propertyDescriptor.PropertyType); } for (int r = 0; r < source.RowCount; r++) { object[] rowValues = new object[dt.Columns.Count]; for (int c = 0; c < dt.Columns.Count; c++) { rowValues[c] = source.GetValue(r, dt.Columns[c].ColumnName); } dt.Rows.Add(rowValues); } return(dt); }
void CalculateSalesPerYear() { salesPerYear = new Dictionary <int, List <decimal> >(); PivotSummaryDataSource ds = pivotGridControl1.CreateSummaryDataSource(); for (int i = 0; i < ds.RowCount; i++) { int year = (int)ds.GetValue(i, fieldYear); List <decimal> list; if (!salesPerYear.TryGetValue(year, out list)) { list = new List <decimal>(); salesPerYear.Add(year, list); } list.Add((decimal)ds.GetValue(i, fieldRank)); } foreach (List <decimal> list in salesPerYear.Values) { list.Sort(ReverseDecimalSort); } }
public static DataTable ConvertSummaryDataSourceToDataTable(PivotSummaryDataSource source) { DataTable result = new DataTable(); ITypedList dataProperties = source as ITypedList; if (dataProperties == null) { return(result); } foreach (PropertyDescriptor prop in dataProperties.GetItemProperties(null)) { result.Columns.Add(prop.Name, prop.PropertyType); } for (int row = 0; row < source.RowCount; row++) { List <object> values = new List <object>(); foreach (DataColumn col in result.Columns) { values.Add(source.GetValue(row, col.ColumnName)); } result.Rows.Add(values.ToArray()); } return(result); }