コード例 #1
0
ファイル: OleDataProvider.cs プロジェクト: shine8319/DLS
        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;
        }
コード例 #2
0
		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;
			}
		}
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 private void CreateGrouping(ReportSettings settings)
 {
     if (!String.IsNullOrEmpty(this.Grouping))
     {
         GroupColumn g = new GroupColumn(Grouping, 1, System.ComponentModel.ListSortDirection.Ascending);
         settings.GroupColumnsCollection.Add(g);
     }
 }
コード例 #7
0
		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);
		}
コード例 #8
0
        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;
            }
        }
コード例 #9
0
		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);
		}
コード例 #10
0
        private TableStrategy GroupTableStrategyFactory(GroupColumn sortColumn)
        {
            var reportSettings = new ReportSettings();

            reportSettings.GroupColumnsCollection.Add(sortColumn);
            var tableStrategy = new TableStrategy(this.table, reportSettings);

            return(tableStrategy);
        }
コード例 #11
0
        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());
                }
            }
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
		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);
			}
		}
コード例 #15
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);
			}
		}
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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);
        }
コード例 #19
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);
            }
        }
コード例 #20
0
        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);
            }
        }
コード例 #21
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;
            }
        }
コード例 #22
0
        /// <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);
        }
コード例 #23
0
        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;
            }
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        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);
        }
コード例 #26
0
        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);
        }
コード例 #27
0
ファイル: OleDataProvider.cs プロジェクト: shine8319/DLS
 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;
 }
コード例 #28
0
		public void ConstructorWithInvalidGroupLevel()
		{
			GroupColumn gc = new GroupColumn ("TestColumn",-1, ListSortDirection.Ascending);
		}
コード例 #29
0
        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);
        }
コード例 #30
0
        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;
            //}
        }
コード例 #31
0
 public void ConstructorWithInvalidGroupLevel()
 {
     GroupColumn gc = new GroupColumn("TestColumn", -1, ListSortDirection.Ascending);
 }
コード例 #32
0
		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());
				}
			}
		}
コード例 #33
0
ファイル: OleDataProvider.cs プロジェクト: shine8319/DLS
        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;
        }
コード例 #34
0
		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;
		}
コード例 #35
0
        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
        }
コード例 #36
0
		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;
		}
コード例 #37
0
		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;
		}
コード例 #38
0
		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;
			}
		}
コード例 #39
0
		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;
			}
		}