private ROIState.TabEState.Tab1State.GridState GetGridState() { var gridState = new ROIState.TabEState.Tab1State.GridState(); var dataTable = (DataTable)gridControlTab1.DataSource; var monthCount = Int32.Parse((comboBoxEditTab1Combo1.EditValue as ListDataItem)?.Value ?? "0"); for (var rowIndex = 0; rowIndex < dataTable.Rows.Count; rowIndex++) { var dataRow = dataTable.Rows[rowIndex]; for (var i = 0; i < monthCount; i++) { var columnName = String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i); if (dataTable.Columns.Contains(columnName)) { var columnValue = dataRow[columnName]; switch (rowIndex) { case 0: gridState.DigitalImpressionValues.Add(columnValue != DBNull.Value ? (decimal?)columnValue : null); break; case 1: gridState.MediaImpressionValues.Add(columnValue != DBNull.Value ? (decimal?)columnValue : null); break; case 3: gridState.InvestmentValues.Add(columnValue != DBNull.Value ? (decimal?)columnValue : null); break; } } } if (rowIndex == 3 && dataTable.Columns.Contains(ROITabEInfo.Tab1Info.GridColumnNamePrelaunch) && dataRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch] != DBNull.Value) { gridState.Prelaunch = (decimal?)dataRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch]; } } return(gridState); }
private void LoadGridData(ROIState.TabEState.Tab1State.GridState savedState) { var showPrelaunchColumn = checkEditTab1Checkbox2.Checked; var monthCount = Int32.Parse((comboBoxEditTab1Combo1.EditValue as ListDataItem)?.Value ?? "0"); var useMonthTitles = checkEditTab1Checkbox1.Checked; var firstMonthItem = comboBoxEditTab1Combo2.EditValue as ListDataItem; var firstMonthIndex = CustomTabInfo.Tab1.Combo2Items.FindIndex(item => String.Equals(item.Value, firstMonthItem?.Value, StringComparison.OrdinalIgnoreCase)); var monthIndex = firstMonthIndex > 0 ? firstMonthIndex : 0; var monthNames = new List <string>(); for (var i = 0; i < monthCount; i++) { if (useMonthTitles) { monthNames.Add(CustomTabInfo.Tab1.Combo2Items.ElementAt(monthIndex).Value); monthIndex++; if (monthIndex == CustomTabInfo.Tab1.Combo2Items.Count) { monthIndex = 0; } } else { monthNames.Add(String.Format("{0} {1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i + 1)); } } var dataSource = new DataTable(); var column = new DataColumn(ROITabEInfo.Tab1Info.GridColumnNameRowTitle, typeof(string)); dataSource.Columns.Add(column); if (showPrelaunchColumn) { column = new DataColumn(ROITabEInfo.Tab1Info.GridColumnNamePrelaunch, typeof(decimal)) { AllowDBNull = true }; dataSource.Columns.Add(column); } var totalMonthExpression = new List <string>(); for (var i = 0; i < monthCount; i++) { var columnName = String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i); dataSource.Columns.Add(new DataColumn(columnName, typeof(decimal)) { Caption = monthNames.ElementAt(i), AllowDBNull = true }); totalMonthExpression.Add(String.Format("ISNULL({0},0)", columnName)); } column = new DataColumn(ROITabEInfo.Tab1Info.GridColumnNameTotal, typeof(decimal)) { AllowDBNull = true, Expression = String.Format("{0}{1}", showPrelaunchColumn ? String.Format("ISNULL({0},0) + ", ROITabEInfo.Tab1Info.GridColumnNamePrelaunch) : String.Empty, String.Join(" + ", totalMonthExpression)) }; dataSource.Columns.Add(column); var digitalImpressionsRow = dataSource.NewRow(); digitalImpressionsRow.BeginEdit(); digitalImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNameRowTitle] = "Digital Impressions"; if (showPrelaunchColumn) { digitalImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch] = 0m; } for (var i = 0; i < monthCount; i++) { digitalImpressionsRow[String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i)] = (object)savedState?.DigitalImpressionValues?.ElementAtOrDefault(i) ?? DBNull.Value; } digitalImpressionsRow.EndEdit(); dataSource.Rows.Add(digitalImpressionsRow); var mediaImpressionsRow = dataSource.NewRow(); mediaImpressionsRow.BeginEdit(); mediaImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNameRowTitle] = "Television Impressions"; if (showPrelaunchColumn) { mediaImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch] = 0m; } for (var i = 0; i < monthCount; i++) { mediaImpressionsRow[String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i)] = (object)savedState?.MediaImpressionValues?.ElementAtOrDefault(i) ?? DBNull.Value; } mediaImpressionsRow.EndEdit(); dataSource.Rows.Add(mediaImpressionsRow); var totalImpressionsRow = dataSource.NewRow(); totalImpressionsRow.BeginEdit(); totalImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNameRowTitle] = "Total Impressions"; if (showPrelaunchColumn) { totalImpressionsRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch] = 0m; } for (var i = 0; i < monthCount; i++) { var digitalValue = savedState?.DigitalImpressionValues?.ElementAtOrDefault(i); var mediaValue = savedState?.MediaImpressionValues?.ElementAtOrDefault(i); totalImpressionsRow[String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i)] = digitalValue != null || mediaValue != null ? (object)((digitalValue ?? 0m) + (mediaValue ?? 0m)) : DBNull.Value; } totalImpressionsRow.EndEdit(); dataSource.Rows.Add(totalImpressionsRow); var investmentRow = dataSource.NewRow(); investmentRow.BeginEdit(); investmentRow[ROITabEInfo.Tab1Info.GridColumnNameRowTitle] = "Investment"; if (showPrelaunchColumn) { investmentRow[ROITabEInfo.Tab1Info.GridColumnNamePrelaunch] = (object)savedState?.Prelaunch ?? DBNull.Value; } for (var i = 0; i < monthCount; i++) { investmentRow[String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i)] = (object)savedState?.InvestmentValues?.ElementAtOrDefault(i) ?? DBNull.Value; } investmentRow.EndEdit(); dataSource.Rows.Add(investmentRow); gridBandPrelaunch.Visible = showPrelaunchColumn; gridBandMonths.Visible = false; gridBandMonths.Columns.Clear(); for (var i = 0; i < monthCount; i++) { var columnName = String.Format("{0}{1}", ROITabEInfo.Tab1Info.GridColumnNameMonthDefaultPrefix, i); var bandedGridColumn = new BandedGridColumn(); bandedGridColumn.Caption = monthNames.ElementAtOrDefault(i); bandedGridColumn.ColumnEdit = repositoryItemSpinEditTab1Impressions; bandedGridColumn.FieldName = columnName; bandedGridColumn.OptionsColumn.FixedWidth = true; bandedGridColumn.Width = (Int32)(70 * _scaleFactor.Width); bandedGridColumn.Visible = true; bandedGridColumn.OptionsColumn.AllowSize = false; bandedGridColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center; bandedGridColumn.AppearanceHeader.TextOptions.Trimming = Trimming.None; bandedGridColumn.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap; bandedGridColumn.AppearanceHeader.Options.UseTextOptions = true; bandedGridColumn.OptionsColumn.AllowMerge = DefaultBoolean.False; bandedGridViewTab1.Columns.Add(bandedGridColumn); gridBandMonths.Columns.Add(bandedGridColumn); } gridBandMonths.Visible = true; gridControlTab1.DataSource = dataSource; }