protected string BuildJoinQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { string groupBy = GetGroupBy(period, "Sales.Sale_Date"); string groupByField = string.Empty; string groupByCondition = string.Empty; if(!string.IsNullOrEmpty(groupBy)) { groupByField = ", " + groupBy + " AS SaleDate"; groupByCondition = ", " + groupBy; } string keyColumn = string.Empty; string tableName = string.Empty; string columnName = string.Empty; if(column != GroupColumn.None) { string name = Enum.GetName(typeof(GroupColumn), column); keyColumn = name + "Id"; tableName = name + "s"; columnName = name + "_Name"; } string query = string.Format(@"SELECT {1} as Name, SUM(Sales.Total_Cost) as TotalCost, SUM(Sales.Units) as Units {2} FROM Sales INNER JOIN {3} as LinkedTable on Sales.{0} = LinkedTable.Id WHERE Sales.Sale_Date BETWEEN @PeriodStart and @PeriodEnd GROUP BY {1} {4}", keyColumn, Cstr("LinkedTable." + columnName), groupByField, tableName, groupByCondition); return query; }
public void GroupbyOneColumnSortSubList () { var rs = new ReportSettings(); var gc = new GroupColumn() { ColumnName ="GroupItem", SortDirection = ListSortDirection.Ascending, GroupSortColumn = new SortColumn() { ColumnName = "Randomint", SortDirection = ListSortDirection.Ascending } }; rs.GroupColumnsCollection.Add(gc); var collectionSource = new CollectionDataSource (list,rs); collectionSource.Bind(); var testKey = String.Empty; var testSubKey = -1; var groupedList = collectionSource.GroupedList; foreach (var element in groupedList) { Assert.That(element.Key,Is.GreaterThan(testKey)); testKey = element.Key.ToString(); foreach (Contributor sub in element) { Assert.That(sub.RandomInt,Is.GreaterThanOrEqualTo(testSubKey)); testSubKey = sub.RandomInt; } testSubKey = -1; } }
public void GroupbyOneColumnSortSubList() { var rs = new ReportSettings(); var gc = new GroupColumn() { ColumnName = "GroupItem", SortDirection = ListSortDirection.Ascending, GroupSortColumn = new SortColumn() { ColumnName = "Randomint", SortDirection = ListSortDirection.Ascending } }; rs.GroupColumnsCollection.Add(gc); var collectionSource = new CollectionDataSource(list, rs); collectionSource.Bind(); var testKey = String.Empty; var testSubKey = -1; var groupedList = collectionSource.GroupedList; foreach (var element in groupedList) { Assert.That(element.Key, Is.GreaterThan(testKey)); testKey = element.Key.ToString(); foreach (Contributor sub in element) { Assert.That(sub.RandomInt, Is.GreaterThanOrEqualTo(testSubKey)); testSubKey = sub.RandomInt; } testSubKey = -1; } }
public void AddGroupColumn() { GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); Assert.AreEqual(1, rs.GroupColumnsCollection.Count); }
public void Add_GroupColumn_IsGrouped_true() { GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); TableStrategy tableStrategy = GroupTableStrategyFactory(gc); tableStrategy.Bind(); Assert.That(tableStrategy.IsGrouped == true); }
private void CreateGrouping(ReportSettings settings) { if (!String.IsNullOrEmpty(this.Grouping)) { GroupColumn g = new GroupColumn(Grouping, 1, System.ComponentModel.ListSortDirection.Ascending); settings.GroupColumnsCollection.Add(g); } }
public void AddGroupColumn () { GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); Assert.AreEqual(1,rs.GroupColumnsCollection.Count); }
public void CollectionContainsSubclass() { var modifyedCollection = this.ModifyCollection(); GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(modifyedCollection, rs); IDataNavigator dataNavigator = dm.GetNavigator; ReportItemCollection searchCol = new ReportItemCollection(); searchCol.Add(new BaseDataItem() { ColumnName = "DummyClass.DummyString" } ); searchCol.Add(new BaseDataItem() { Name = "Last", ColumnName = "Last" } ); searchCol.Add(new BaseDataItem() { ColumnName = "GroupItem" } ); string compare = string.Empty; while (dataNavigator.MoveNext()) { dataNavigator.Fill(searchCol); var b1 = (BaseDataItem)searchCol[2]; var result = b1.DBValue; Assert.That(compare, Is.LessThan(result)); if (dataNavigator.HasChildren) { var childNavigator = dataNavigator.GetChildNavigator; do { childNavigator.Fill(searchCol); var itemDummy = (BaseDataItem)searchCol[0]; var itemLast = (BaseDataItem)searchCol[1]; var itemGroup = (BaseDataItem)searchCol[2]; Console.WriteLine("\t{0} - {1} - {2}", itemDummy.DBValue, itemLast.DBValue, itemGroup.DBValue); Assert.That(itemDummy.DBValue, Is.Not.Empty); Assert.That(itemLast.DBValue, Is.Not.Empty); Assert.That(itemGroup.DBValue, Is.Not.Empty); }while (childNavigator.MoveNext()); } compare = result; } }
public void Constructor() { GroupColumn gc = new GroupColumn ("TestColumn",1, ListSortDirection.Ascending); Assert.AreEqual(columnName,gc.ColumnName); Assert.AreEqual(1,gc.GroupLevel); Assert.AreEqual(ListSortDirection.Ascending,gc.SortDirection); Type t = typeof(System.String); Assert.AreEqual(t,gc.DataType); }
private TableStrategy GroupTableStrategyFactory(GroupColumn sortColumn) { var reportSettings = new ReportSettings(); reportSettings.GroupColumnsCollection.Add(sortColumn); var tableStrategy = new TableStrategy(this.table, reportSettings); return(tableStrategy); }
public void SortChildrenDescending() { ReportSettings rs = new ReportSettings(); GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); rs.GroupColumnsCollection.Add(gc); SortColumn sc = new SortColumn("Last", ListSortDirection.Descending); rs.SortColumnsCollection.Add(sc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection, rs); var dataNavigator = dm.GetNavigator; ReportItemCollection searchCol = new ReportItemCollection(); searchCol.Add(new BaseDataItem() { Name = "Last", ColumnName = "Last" } ); searchCol.Add(new BaseDataItem() { ColumnName = "GroupItem" } ); string compare = String.Empty; while (dataNavigator.MoveNext()) { dataNavigator.Fill(searchCol); var column = (BaseDataItem)searchCol[1]; var result = column.DBValue.ToString(); Assert.That(compare, Is.LessThan(result)); if (dataNavigator.HasChildren) { string compareChild = String.Empty; var childNavigator = dataNavigator.GetChildNavigator; do { childNavigator.Fill(searchCol); var childColumn = (BaseDataItem)searchCol[0]; var childResult = childColumn.DBValue.ToString(); // Console.WriteLine("\t{0}",childResult); if (!String.IsNullOrEmpty(compareChild)) { Assert.LessOrEqual(childResult, compareChild); } compareChild = childResult; }while (childNavigator.MoveNext()); } } }
private IDataNavigator PrepareDateTimeGrouping() { GroupColumn gc = new GroupColumn("RandomDate", 1, ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection, rs); return(dm.GetNavigator); }
private IDataNavigator PrepareStringGrouping() { GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table, rs); return(dm.GetNavigator); }
public void CanGroup_All_Elements_Contains_Children () { GroupColumn groupComparer = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); var tableStrategy =GroupTableStrategyFactory (groupComparer); tableStrategy.Bind(); foreach (BaseComparer element in tableStrategy.IndexList) { GroupComparer checkComparer = element as GroupComparer; Assert.That(checkComparer.IndexList.Count > 0); } }
public void CanGroup_All_Elements_are_GroupComparer () { GroupColumn groupComparer = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); ICSharpCode.Reports.Core.ListStrategy.TableStrategy tableStrategy = GroupTableStrategyFactory (groupComparer); tableStrategy.Bind(); foreach (BaseComparer element in tableStrategy.IndexList) { GroupComparer checkComparer = element as GroupComparer; Assert.IsNotNull(checkComparer); } }
public void Constructor() { GroupColumn gc = new GroupColumn("TestColumn", 1, ListSortDirection.Ascending); Assert.AreEqual(columnName, gc.ColumnName); Assert.AreEqual(1, gc.GroupLevel); Assert.AreEqual(ListSortDirection.Ascending, gc.SortDirection); Type t = typeof(System.String); Assert.AreEqual(t, gc.DataType); }
public void GroupColumCollection_Grouping_Should_Set() { ReportModel m = ReportGenerationHelper.CreateModel(reportName, false); var rs = m.ReportSettings; GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); rs.GroupColumnsCollection.Add(gc); Assert.AreEqual(rs.GroupColumnsCollection.Count, 1); }
static string ExtractValue(BaseComparer element) { string val = String.Empty; GroupColumn gc = element.ColumnCollection[0] as GroupColumn; if (gc != null) { val = element.ObjectArray[0].ToString(); } return(val); }
public void CanGroup_All_Elements_are_GroupComparer() { GroupColumn groupComparer = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); ICSharpCode.Reports.Core.ListStrategy.TableStrategy tableStrategy = GroupTableStrategyFactory(groupComparer); tableStrategy.Bind(); foreach (BaseComparer element in tableStrategy.IndexList) { GroupComparer checkComparer = element as GroupComparer; Assert.IsNotNull(checkComparer); } }
public void CanGroup_All_Elements_Contains_Children() { GroupColumn groupComparer = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); var tableStrategy = GroupTableStrategyFactory(groupComparer); tableStrategy.Bind(); foreach (BaseComparer element in tableStrategy.IndexList) { GroupComparer checkComparer = element as GroupComparer; Assert.That(checkComparer.IndexList.Count > 0); } }
void ReleaseDesignerOutlets() { if (birthField != null) { birthField.Dispose(); birthField = null; } if (GroupColumn != null) { GroupColumn.Dispose(); GroupColumn = null; } if (groupField != null) { groupField.Dispose(); groupField = null; } if (hometownField != null) { hometownField.Dispose(); hometownField = null; } if (NameColumn != null) { NameColumn.Dispose(); NameColumn = null; } if (nameField != null) { nameField.Dispose(); nameField = null; } if (StudentTable != null) { StudentTable.Dispose(); StudentTable = null; } if (surnameField != null) { surnameField.Dispose(); surnameField = null; } }
/// <summary> /// Raises the OnPaintCell event /// </summary> /// <param name="e"></param> public override void OnPaintCell(PaintCellEventArgs e) { if (e.Table.ColumnModel.Columns[e.Column] is GroupColumn) { GroupColumn column = (GroupColumn)e.Table.ColumnModel.Columns[e.Column]; this.drawText = column.DrawText; this.lineColor = column.LineColor; this.toggleOnSingleClick = column.ToggleOnSingleClick; } else { this.drawText = false; } base.OnPaintCell(e); }
public void SortChildrenDescending() { ReportSettings rs = new ReportSettings(); GroupColumn gc = new GroupColumn("GroupItem", 1, ListSortDirection.Ascending); rs.GroupColumnsCollection.Add(gc); SortColumn sc = new SortColumn("Last", ListSortDirection.Descending); rs.SortColumnsCollection.Add(sc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table, rs); var dataNavigator = dm.GetNavigator; string compare = String.Empty; while (dataNavigator.MoveNext()) { DataRow dr = dataNavigator.Current as DataRow; var result = dr[3].ToString(); Assert.That(compare, Is.LessThan(result)); if (dataNavigator.HasChildren) { string compareChild = String.Empty; var childNavigator = dataNavigator.GetChildNavigator; do { DataRow childRow = childNavigator.Current as DataRow; var childResult = childRow[1].ToString(); if (!String.IsNullOrEmpty(compareChild)) { Assert.LessOrEqual(childResult, compareChild); } // Console.WriteLine("\t{0}",childResult); compareChild = childResult; }while (childNavigator.MoveNext()); } compare = result; } }
protected string BuildJoinQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { string groupBy = GetGroupBy(period, "Sales.Sale_Date"); string groupByField = string.Empty; string groupByCondition = string.Empty; if (!string.IsNullOrEmpty(groupBy)) { groupByField = ", " + groupBy + " AS SaleDate"; groupByCondition = ", " + groupBy; } string keyColumn = string.Empty; string tableName = string.Empty; string columnName = string.Empty; if (column != GroupColumn.None) { string name = Enum.GetName(typeof(GroupColumn), column); keyColumn = name + "Id"; tableName = name + "s"; columnName = name + "_Name"; } string query = string.Format(@"SELECT {1} as Name, SUM(Sales.Total_Cost) as TotalCost, SUM(Sales.Units) as Units {2} FROM Sales INNER JOIN {3} as LinkedTable on Sales.{0} = LinkedTable.Id WHERE Sales.Sale_Date BETWEEN @PeriodStart and @PeriodEnd GROUP BY {1} {4}", keyColumn, Cstr("LinkedTable." + columnName), groupByField, tableName, groupByCondition); return(query); }
IEnumerable <SalesGroup> ExecuteQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { if (start < MinDate) { start = MinDate; } if (end > MaxDate) { end = MaxDate; } IList <SalesGroup> result = null; if (connection.State != ConnectionState.Open && connection.State != ConnectionState.Connecting) { connection.Open(); } DbCommand command; if (column == GroupColumn.None) { command = CreateQueryBySales(start, end, period); } else { command = CreateJoinQuery(start, end, period, column); } command.Connection = connection; command.Prepare(); result = new List <SalesGroup>(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { string name = reader["Name"].ToString(); decimal totalCost = 0; int units = 0; DateTime startDate = start; DateTime endDate = end; if (!(reader["TotalCost"] is DBNull)) { totalCost = Convert.ToDecimal(reader["TotalCost"]); units = Convert.ToInt32(reader["Units"]); if (reader.FieldCount > 3) { startDate = Convert.ToDateTime(reader["SaleDate"]); endDate = GetEndDate(startDate, end, period); } } result.Add(new SalesGroup(name, totalCost, units, startDate, endDate)); } } return(result); }
protected virtual DbCommand CreateJoinQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { string query = BuildJoinQuery(start, end, period, column); OleDbCommand command = new OleDbCommand(query); command.Parameters.Add(new OleDbParameter("@PeriodStart", OleDbType.Date)).Value = start; command.Parameters.Add(new OleDbParameter("@PeriodEnd", OleDbType.Date)).Value = end; return(command); }
protected virtual DbCommand CreateJoinQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { string query = BuildJoinQuery(start, end, period, column); OleDbCommand command = new OleDbCommand(query); command.Parameters.Add(new OleDbParameter("@PeriodStart", OleDbType.Date)).Value = start; command.Parameters.Add(new OleDbParameter("@PeriodEnd", OleDbType.Date)).Value = end; return command; }
public void ConstructorWithInvalidGroupLevel() { GroupColumn gc = new GroupColumn ("TestColumn",-1, ListSortDirection.Ascending); }
private ICSharpCode.Reports.Core.ListStrategy.TableStrategy GroupTableStrategyFactory(GroupColumn sortColumn) { var reportSettings = new ReportSettings(); reportSettings.GroupColumnsCollection.Add(sortColumn); var tableStrategy = new ICSharpCode.Reports.Core.ListStrategy.TableStrategy(this.table, reportSettings); return(tableStrategy); }
static void SetHalfhoursColumnsForXamDataGrid(XamGrid dataGrid, DataTableEx userTable, enumTimeDiscreteType discreteType, enumTypeInformation typeInformation, string format, bool isCumulateDrums, bool isDateTimeGroupingGridControlXam) { //var nameStyle = dataGrid.FindResource("TIChanelName") as Style; Style labelStyle = null; //try //{ // labelStyle = dataGrid.FindResource("LabelObjectStyle") as Style; // dataGrid.FieldSettings.LabelPresenterStyle = labelStyle; //} //catch //{ //} var groupLabelTemplate = dataGrid.FindResource("GroupLabelObjectTemplate") as DataTemplate; var channelLabelTemplate = dataGrid.FindResource("ChannelLabelObjectTemplate") as DataTemplate; var unchannelLabelTemplate = dataGrid.FindResource("LabelUnchannelTemplate") as DataTemplate; var vTemplate = dataGrid.FindResource("FValueTemplate") as DataTemplate; var vTemplateNoBindMeasure = Application.Current.FindResource("FValueTemplateNoBindMeasureFormTemplate") as DataTemplate; var vFreeHierarchyObjectTemplate = Application.Current.FindResource("FreeHierarchyObjectTemlate") as DataTemplate; var columnWidth = new ColumnWidth(105, false); //var widthValue = new FieldLength(105); //var widthFreeHier = new FieldLength(270); var comparer = new IFValueComparer(); var dtConverter = new DateTimeConverter(); var dtToolTiptemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate; var measure = dataGrid.FindParent <IMeasure>(); dataGrid.Resources["IMeasure"] = measure; //var fieldLayout = dataGrid.ColumnLayouts[0]; //TemplateField dtField; try { //fieldLayout.Fields.BeginUpdate(); //fieldLayout.SortedFields.BeginUpdate(); var dtCol = userTable.Columns["EventDateTime"]; var dtField = new TextColumn { Key = dtCol.ColumnName, IsReadOnly = true, //DataType = dtCol.DataType, HeaderText = dtCol.Caption, //Width = new FieldLength(95), Width = new ColumnWidth(90, false), ValueConverter = dtConverter, HorizontalContentAlignment = HorizontalAlignment.Center, VerticalContentAlignment = VerticalAlignment.Center, AllowToolTips = AllowToolTips.Always, ToolTipContentTemplate = dtToolTiptemplate, DataViewType = typeof(DateTime), IsSortable = true, IsSorted = SortDirection.Ascending, GroupByComparer = new ByDayComparer(), //Settings = { LabelPresenterStyle = dataGrid.FindResource("TimeStyle") as Style } }; dataGrid.Columns.Add(dtField); if (isCumulateDrums) { //dtField.Settings.CellValuePresenterStyle = // XamDataGridHelper.DataTemplateToCellValuePresenterStyle(ConstantHelper.DateTimeTemplateName); dtConverter.Parametr = ConstantHelper.DateTimeTemplateName; //dtField.ItemTemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate; } else { string dataTemplateToCellValuePresenterStyleName; //------------------------------- switch (discreteType) { case enumTimeDiscreteType.DB24Hour: dataTemplateToCellValuePresenterStyleName = ConstantHelper.DateTemplateName; break; case enumTimeDiscreteType.DBMonth: dataTemplateToCellValuePresenterStyleName = ConstantHelper.MonthName; break; default: dataTemplateToCellValuePresenterStyleName = ConstantHelper.DateTimeTemplateName; break; } dtConverter.Parametr = dataTemplateToCellValuePresenterStyleName; } dtField.HeaderText = "Время"; //dataGrid.GroupBySettings.GroupByColumns.Add(dtField); //if (discreteType == enumTimeDiscreteType.DB24Hour) //{ //dtField.Settings.GroupByMode = FieldGroupByMode.Month; //dtField.Settings.GroupByRecordPresenterStyle = //Application.Current.FindResource("MonthYearXamDataGridStyle") as Style; //} //else //{ //dtField.Settings.GroupByMode = FieldGroupByMode.Date; //} //SummaryCalculator statType; //string prefix; //if (typeInformation == enumTypeInformation.Power) //{ // statType = new FValueAvgCalculator(format); // prefix = "Сред:"; //} //else //{ // statType = new FValueSumCalculator(format); // prefix = "Сум:"; //} //var stringFormat = prefix + " {0:" + format + "}"; var stringFormat = " {0:" + format + "}"; var dfc = new DetailFieldInfoEqualityComparer(); //FieldGroup fieldGroupByObject = null; //FieldGroup fieldGroupByMeasureCategory = null; //EnumMeasureUnitCategory? previousMeasureCategory = null; //Для определения групповать или нет по категории foreach (var colGroupByObject in userTable.Columns .Cast <DataColumn>() .Where(c => c.ColumnName != "EventDateTime") .Select(c => { DetailFieldInfo fieldInfo; userTable.TryGetIndexByItemName(c.ColumnName, out fieldInfo); return(new Tuple <DetailFieldInfo, DataColumn>(fieldInfo, c)); }) .GroupBy(c => c.Item1, dfc)) { var fieldInfo = colGroupByObject.Key; if (fieldInfo == null || fieldInfo.ChannelType == 0) { //Группировать не нужно foreach (var colByObject in colGroupByObject) { FValueSummaryDefinition summaryDefinition; var fld = AddFieldAndSummary(colByObject.Item2, comparer, fieldInfo != null && fieldInfo.UseMeasureModule, vTemplate, vTemplateNoBindMeasure, columnWidth); if (fieldInfo != null && fieldInfo.Id != null) { fld.HeaderTemplate = groupLabelTemplate; fld.Label = colByObject.Item1.Id; } else { fld.HeaderText = colByObject.Item2.Caption; } //fld.HeaderText = (fieldInfo == null ? colByObject.Item2.Caption : (object)colByObject.Item1).ToString(); dataGrid.Columns.Add(fld); //if (summaryDefinition != null) //{ // fieldLayout.SummaryDefinitions.Add(summaryDefinition); //} } } else { var fieldGroupByObject = new GroupColumn { //Label = fieldInfo.Id, Key = fieldInfo.ColumnName + "___", Label = fieldInfo.Id, //HeaderText = fieldInfo.Id.ToString(), HeaderTemplate = groupLabelTemplate, }; dataGrid.Columns.Add(fieldGroupByObject); //Группируем по объектам foreach (var colGroupByMeasureCategory in colGroupByObject.GroupBy(c => c.Item1.MeasureUnitUn.SubstringQuantityUn())) { var colGroupByMeasureCategoryList = colGroupByMeasureCategory.ToList(); if (!string.IsNullOrEmpty(colGroupByMeasureCategory.Key) && colGroupByMeasureCategoryList.Count > 1) { //Есть категории ед. измерения и их несколько var fieldGroupByMeasureCategory = new GroupColumn { Label = new LabelMeasureQuantity { MeasureQuantityType_UN = colGroupByMeasureCategory.Key, }, Key = fieldInfo.Id + "_" + colGroupByMeasureCategory.Key, }; fieldGroupByObject.Columns.Add(fieldGroupByMeasureCategory); foreach (var colByMeasure in colGroupByMeasureCategoryList) { FValueSummaryDefinition summaryDefinition; var fld = AddFieldAndSummary(colByMeasure.Item2, comparer, fieldInfo.UseMeasureModule, vTemplate, vTemplateNoBindMeasure, columnWidth); //isCumulateDrums, statType, stringFormat, fieldLayout, out summaryDefinition); //fld.Label = colByMeasure.Item1; fld.HeaderTemplate = colByMeasure.Item1.ChannelType == 0 ? unchannelLabelTemplate : channelLabelTemplate; fld.Label = colByMeasure.Item1; fieldGroupByMeasureCategory.Columns.Add(fld); //if (summaryDefinition != null) //{ // fieldLayout.SummaryDefinitions.Add(summaryDefinition); //} } } else { //Нет категорий, или она одна var fielgGroupByReplacedTiDict = new Dictionary <string, GroupColumn>(); foreach (var colByMeasure in colGroupByMeasureCategoryList) { if (colByMeasure.Item2.ColumnName.StartsWith("ovInfo")) { //Это информация об ОВ //var hoc = new HierObjectsConverterComparer(); var fld = AddField(colByMeasure.Item2, fieldInfo.UseMeasureModule, vFreeHierarchyObjectTemplate, vFreeHierarchyObjectTemplate, columnWidth); //widthFreeHier fld.Label = "Замещаемые ТИ"; //fld.Settings.FilterOperandUIType = FilterOperandUIType.DropDownList; //fld.Settings.FilterLabelIconDropDownType = FilterLabelIconDropDownType.MultiSelectExcelStyle; //fld.Settings.GroupByComparer = hoc; //fld.ValueToTextConverter = new HierObjectsConverter(); //fld.Settings.FilterComparer = new HierObjectsConverterComparer(); fieldGroupByObject.Columns.Add(fld); } else { GroupColumn fielgGroupByReplacedTi = null; //Группируем по замещаемой ТИ if (colByMeasure.Item2.ColumnName.StartsWith("ovValue") && !fielgGroupByReplacedTiDict.TryGetValue( colByMeasure.Item1.GroupByReplacedTiName, out fielgGroupByReplacedTi)) { fielgGroupByReplacedTi = new GroupColumn { Label = colByMeasure.Item1.ReplacedId, Key = colByMeasure.Item1.ColumnName + "_", HeaderText = colByMeasure.Item1.ReplacedId.ToString(), }; fielgGroupByReplacedTiDict[colByMeasure.Item1.GroupByReplacedTiName] = fielgGroupByReplacedTi; } //FValueSummaryDefinition summaryDefinition; var fld = AddFieldAndSummary(colByMeasure.Item2, comparer, fieldInfo.UseMeasureModule, vTemplate, vTemplateNoBindMeasure, columnWidth); //isCumulateDrums, statType, stringFormat, fieldLayout, out summaryDefinition); fld.Label = colByMeasure.Item1; fld.HeaderTemplate = colByMeasure.Item1.ChannelType == 0 ? unchannelLabelTemplate : channelLabelTemplate; if (fielgGroupByReplacedTi != null) { fielgGroupByReplacedTi.Columns.Add(fld); } else { fieldGroupByObject.Columns.Add(fld); } //if (summaryDefinition != null) //{ // fieldLayout.SummaryDefinitions.Add(summaryDefinition); //} //if (colByMeasure.Item1.IsOv) //{ // //Если это ОВ, добавляем суммарную информацию о неразнесенных значениях // var unWritedOvs = new FValueSummaryDefinition // { // SourceFieldName = colByMeasure.Item2.ColumnName, // Calculator = new FValueSumUnreplacedCalculator(format), // StringFormat = stringFormat, // UseMeasureModule = fieldInfo.UseMeasureModule, // }; // fieldLayout.SummaryDefinitions.Add(unWritedOvs); //} } } if (fielgGroupByReplacedTiDict.Count > 0) { foreach (var c in fielgGroupByReplacedTiDict.Values) { fieldGroupByObject.Columns.Add(c); } } } } } } //if (isDateTimeGroupingGridControlXam && // (discreteType == enumTimeDiscreteType.DBHalfHours || discreteType == enumTimeDiscreteType.DBHours || // discreteType == enumTimeDiscreteType.DB24Hour)) //{ // //dtField.Settings.AllowSummaries = false; // dtField.Settings.AllowGroupBy = true; // fieldLayout.SortedFields.Add(new FieldSortDescription("EventDateTime", ListSortDirection.Ascending, // true)); //} //else //{ // dtField.DisplayTemplate = Application.Current.Resources[ConstantHelper.DateTimeTemplateName] as DataTemplate; // //dtField.Settings.CellValuePresenterStyle = // // XamDataGridHelper.DataTemplateToCellValuePresenterStyle(ConstantHelper.DateTimeTemplateName); //} //var consumptionScheduleField = fieldLayout.Fields.FirstOrDefault(ff => ff.Name == "ConsumptionSchedule"); //if (consumptionScheduleField != null) //{ // consumptionScheduleField.Label = "Тип. потр."; //} //var consumptionSchedulePercentField = fieldLayout.Fields.FirstOrDefault(ff => ff.Name == "ConsumptionSchedulePercent"); //if (consumptionSchedulePercentField != null) //{ // consumptionSchedulePercentField.Label = "Тип. потр. %"; //} } finally { // fieldLayout.SortedFields.EndUpdate(); //fieldLayout.Fields.EndUpdate(); } //dataGrid.FieldLayoutSettings.FixedFieldUIType = FixedFieldUIType.Splitter; //dataGrid.FieldSettings.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed; if (userTable.Columns.Count < 20) { //из-за того что тормоза ограничиваем //dataGrid.FieldSettings.SummaryDisplayArea = dataGrid.FieldSettings.SummaryDisplayArea | SummaryDisplayAreas.InGroupByRecords; } //if (userTable.Columns.Count < 1000) //{ // dataGrid.RecordsInViewChanged += ExpandFirstRecord; //} }
public void ConstructorWithInvalidGroupLevel() { GroupColumn gc = new GroupColumn("TestColumn", -1, ListSortDirection.Ascending); }
public void SortChildrenDescending() { ReportSettings rs = new ReportSettings(); GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); rs.GroupColumnsCollection.Add(gc); SortColumn sc = new SortColumn("Last",ListSortDirection.Descending); rs.SortColumnsCollection.Add(sc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection,rs); var dataNavigator = dm.GetNavigator; ReportItemCollection searchCol = new ReportItemCollection(); searchCol.Add(new BaseDataItem () { Name ="Last", ColumnName ="Last" } ); searchCol.Add(new BaseDataItem () { ColumnName ="GroupItem" } ); string compare = String.Empty; while (dataNavigator.MoveNext()) { dataNavigator.Fill(searchCol); var column = (BaseDataItem)searchCol[1]; var result = column.DBValue.ToString(); Assert.That (compare,Is.LessThan(result)); if (dataNavigator.HasChildren) { string compareChild = String.Empty; var childNavigator = dataNavigator.GetChildNavigator; do { childNavigator.Fill(searchCol); var childColumn = (BaseDataItem)searchCol[0]; var childResult = childColumn.DBValue.ToString(); // Console.WriteLine("\t{0}",childResult); if (!String.IsNullOrEmpty(compareChild)) { Assert.LessOrEqual(childResult,compareChild); } compareChild = childResult; } while (childNavigator.MoveNext()); } } }
IEnumerable<SalesGroup> ExecuteQuery(DateTime start, DateTime end, GroupingPeriod period, GroupColumn column) { if(start < MinDate) start = MinDate; if(end > MaxDate) end = MaxDate; IList<SalesGroup> result = null; if(connection.State != ConnectionState.Open) connection.Open(); DbCommand command; if(column == GroupColumn.None) command = CreateQueryBySales(start, end, period); else command = CreateJoinQuery(start, end, period, column); command.Connection = connection; command.Prepare(); result = new List<SalesGroup>(); using(var reader = command.ExecuteReader()) { while(reader.Read()) { string name = reader["Name"].ToString(); decimal totalCost = 0; int units = 0; DateTime startDate = start; DateTime endDate = end; if(!(reader["TotalCost"] is DBNull)) { totalCost = Convert.ToDecimal(reader["TotalCost"]); units = Convert.ToInt32(reader["Units"]); if(reader.FieldCount > 3) { startDate = Convert.ToDateTime(reader["SaleDate"]); endDate = GetEndDate(startDate, end, period); } } result.Add(new SalesGroup(name, totalCost, units, startDate, endDate)); } } return result; }
private IDataNavigator PrepareDateTimeGrouping () { Console.WriteLine("PrepareDateTimeGrouping ()"); GroupColumn gc = new GroupColumn("RandomDate",1,ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs); return dm.GetNavigator; }
private void DoGroup() { Table table = this.table; // The Table control on a form - already initialised //table.Font = new Font(table.Font.FontFamily, 12f); table.SelectionStyle = SelectionStyle.Grid; table.BeginUpdate(); table.EnableWordWrap = true; // If false, then Cell.WordWrap is ignored table.FamilyRowSelect = true; table.FullRowSelect = true; table.ShowSelectionRectangle = false; table.MultiSelect = true; table.GridLines = GridLines.Both; GroupColumn col0 = new GroupColumn("", 20); // this is the NEW +/- column col0.Editable = false; // Double clicking on this is to toggle the collapsed state col0.Selectable = false; col0.ToggleOnSingleClick = true; ImageColumn col1 = new ImageColumn("", 20); TextColumn col2 = new TextColumn("From", 200); DateTimeColumn col3 = new DateTimeColumn("Sent", 180); /// 493 col3.ShowDropDownButton = false; col3.DateTimeFormat = DateTimePickerFormat.Custom; col3.CustomDateTimeFormat = "d/M/yyyy hh:mm"; col3.Alignment = ColumnAlignment.Right; col3.AutoResizeMode = ColumnAutoResizeMode.Any; //NumberColumn col4 = new NumberColumn("num", 60); //col4.ShowUpDownButtons = true; ButtonColumn col4 = new ButtonColumn("butt"); col4.FlatStyle = true; table.ColumnModel = new ColumnModel(new Column[] { col0, col1, col2, col3, col4 }); TableModel model = new TableModel(); //model.RowHeight = 24; AddEmailRows(model, true, "Dave ", "4/9/2007 12:34", "Here is the email subject", "Here is a preview of the text that is in the email. It wraps over too so you can see more of it"); AddEmailRows(model, false, "Richard Richard Richard Richard Richard Richard Richard Richard Richard Richard Richard Richard Richard Richard", "5/4/2007 9:13", "An email abut something", "Another preview of another ficticious email. Not much to say really"); AddEmailRows(model, true, "Andy", "13/2/2007 9:45", "Work stuff", "Can you get this finished by this afternoon please? Thanks"); // Make and add the context menu: ContextMenu menu = new ContextMenu(); MenuItem delete = new MenuItem("Delete"); delete.Click += new EventHandler(delete_Click); menu.MenuItems.Add(delete); table.ContextMenu = menu; // Add an event handler for the key event table.CellKeyUp += new CellKeyEventHandler(table_CellKeyUp); table.CellButtonClicked += new CellButtonEventHandler(table_CellButtonClicked); table.CellMouseDown += new CellMouseEventHandler(table_CellMouseDown); table.CellMouseUp += new CellMouseEventHandler(table_CellMouseUp); this.table.TableModel = model; this.table.EndUpdate(); return; #region Tracer stuff //_tracer = new Tracer(table, OnEventTrace); //_tracer.HookEvent("BeginEditing"); //_tracer.HookEvent("CellClick"); //_tracer.HookEvent("CellDoubleClick"); //_tracer.HookEvent("CellMouseDown"); //_tracer.HookEvent("CellMouseEnter"); //_tracer.HookEvent("CellMouseHover"); //_tracer.HookEvent("CellMouseLeave"); //_tracer.HookEvent("CellMouseMove"); //_tracer.HookEvent("CellMouseUp"); //_tracer.HookEvent("CellPropertyChanged"); //_tracer.HookEvent("Click"); //_tracer.HookEvent("DoubleClick"); //_tracer.HookEvent("EditingStopped"); //_tracer.HookEvent("Enter"); //_tracer.HookEvent("GotFocus"); //_tracer.HookEvent("LostFocus"); //_tracer.HookEvent("MouseCaptureChanged"); //_tracer.HookEvent("MouseClick"); //_tracer.HookEvent("MouseDoubleClick"); //_tracer.HookEvent("MouseDown"); //_tracer.HookEvent("MouseEnter"); //_tracer.HookEvent("MouseHover"); //_tracer.HookEvent("MouseLeave"); //_tracer.HookEvent("MouseUp"); // _tracer.HookAllEvents(); #endregion }
private IDataNavigator PrepareStringGrouping () { GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection,rs); return dm.GetNavigator; }
private ICSharpCode.Reports.Core.ListStrategy.TableStrategy GroupTableStrategyFactory (GroupColumn sortColumn) { var reportSettings = new ReportSettings(); reportSettings.GroupColumnsCollection.Add(sortColumn); var tableStrategy = new ICSharpCode.Reports.Core.ListStrategy.TableStrategy(this.table,reportSettings); return tableStrategy; }
public void CollectionContainsSubclass () { var modifyedCollection = this.ModifyCollection(); GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); ReportSettings rs = new ReportSettings(); rs.GroupColumnsCollection.Add(gc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(modifyedCollection,rs); IDataNavigator dataNavigator = dm.GetNavigator; ReportItemCollection searchCol = new ReportItemCollection(); searchCol.Add(new BaseDataItem () { ColumnName ="DummyClass.DummyString" } ); searchCol.Add(new BaseDataItem () { Name ="Last", ColumnName ="Last" } ); searchCol.Add(new BaseDataItem () { ColumnName ="GroupItem" } ); string compare = string.Empty; while (dataNavigator.MoveNext()) { dataNavigator.Fill(searchCol); var b1 = (BaseDataItem)searchCol[2]; var result = b1.DBValue; Assert.That (compare,Is.LessThan(result)); if (dataNavigator.HasChildren) { var childNavigator = dataNavigator.GetChildNavigator; do { childNavigator.Fill(searchCol); var itemDummy = (BaseDataItem)searchCol[0]; var itemLast = (BaseDataItem)searchCol[1]; var itemGroup = (BaseDataItem)searchCol[2]; Console.WriteLine ("\t{0} - {1} - {2}",itemDummy.DBValue,itemLast.DBValue,itemGroup.DBValue); Assert.That(itemDummy.DBValue,Is.Not.Empty); Assert.That(itemLast.DBValue,Is.Not.Empty); Assert.That(itemGroup.DBValue,Is.Not.Empty); } while (childNavigator.MoveNext()); } compare = result; } }
public void SortChildrenDescending() { ReportSettings rs = new ReportSettings(); GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); rs.GroupColumnsCollection.Add(gc); SortColumn sc = new SortColumn("Last",ListSortDirection.Descending); rs.SortColumnsCollection.Add(sc); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs); var dataNavigator = dm.GetNavigator; string compare = String.Empty; while (dataNavigator.MoveNext()) { DataRow dr = dataNavigator.Current as DataRow; var result = dr[3].ToString(); Assert.That(compare,Is.LessThan(result)); if (dataNavigator.HasChildren) { string compareChild = String.Empty; var childNavigator = dataNavigator.GetChildNavigator; do { DataRow childRow = childNavigator.Current as DataRow; var childResult = childRow[1].ToString(); if (!String.IsNullOrEmpty(compareChild)) { Assert.LessOrEqual(childResult,compareChild); } // Console.WriteLine("\t{0}",childResult); compareChild = childResult; } while (childNavigator.MoveNext()); } compare = result; } }