/// <summary> /// Add a date grouping on this field. /// </summary> /// <param name="groupBy">Group by</param> /// <param name="startDate">Fixed start date. Use DateTime.MinValue for auto</param> /// <param name="endDate">Fixed end date. Use DateTime.MaxValue for auto</param> public void AddDateGrouping(eDateGroupBy groupBy, DateTime startDate, DateTime endDate) { ValidateGrouping(); bool firstField = true; List<ExcelPivotTableField> fields=new List<ExcelPivotTableField>(); //Seconds if ((groupBy & eDateGroupBy.Seconds) == eDateGroupBy.Seconds) { fields.Add(AddField(eDateGroupBy.Seconds, startDate, endDate, ref firstField)); } //Minutes if ((groupBy & eDateGroupBy.Minutes) == eDateGroupBy.Minutes) { fields.Add(AddField(eDateGroupBy.Minutes, startDate, endDate, ref firstField)); } //Hours if ((groupBy & eDateGroupBy.Hours) == eDateGroupBy.Hours) { fields.Add(AddField(eDateGroupBy.Hours, startDate, endDate, ref firstField)); } //Days if ((groupBy & eDateGroupBy.Days) == eDateGroupBy.Days) { fields.Add(AddField(eDateGroupBy.Days, startDate, endDate, ref firstField)); } //Month if ((groupBy & eDateGroupBy.Months) == eDateGroupBy.Months) { fields.Add(AddField(eDateGroupBy.Months, startDate, endDate, ref firstField)); } //Quarters if ((groupBy & eDateGroupBy.Quarters) == eDateGroupBy.Quarters) { fields.Add(AddField(eDateGroupBy.Quarters, startDate, endDate, ref firstField)); } //Years if ((groupBy & eDateGroupBy.Years) == eDateGroupBy.Years) { fields.Add(AddField(eDateGroupBy.Years, startDate, endDate, ref firstField)); } _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/@par", (_table.Fields.Count - 1).ToString()); _items = null; }
private void AddDateGrouping(eDateGroupBy groupBy, DateTime startDate, DateTime endDate, int groupInterval) { if (groupInterval < 1 || groupInterval >= Int16.MaxValue) { throw (new ArgumentOutOfRangeException("Group interval is out of range")); } if (groupInterval > 1 && groupBy != eDateGroupBy.Days) { throw (new ArgumentException("Group interval is can only be used when groupBy is Days")); } ValidateGrouping(); bool firstField = true; List<ExcelPivotTableField> fields=new List<ExcelPivotTableField>(); //Seconds if ((groupBy & eDateGroupBy.Seconds) == eDateGroupBy.Seconds) { fields.Add(AddField(eDateGroupBy.Seconds, startDate, endDate, ref firstField)); } //Minutes if ((groupBy & eDateGroupBy.Minutes) == eDateGroupBy.Minutes) { fields.Add(AddField(eDateGroupBy.Minutes, startDate, endDate, ref firstField)); } //Hours if ((groupBy & eDateGroupBy.Hours) == eDateGroupBy.Hours) { fields.Add(AddField(eDateGroupBy.Hours, startDate, endDate, ref firstField)); } //Days if ((groupBy & eDateGroupBy.Days) == eDateGroupBy.Days) { fields.Add(AddField(eDateGroupBy.Days, startDate, endDate, ref firstField, groupInterval)); } //Month if ((groupBy & eDateGroupBy.Months) == eDateGroupBy.Months) { fields.Add(AddField(eDateGroupBy.Months, startDate, endDate, ref firstField)); } //Quarters if ((groupBy & eDateGroupBy.Quarters) == eDateGroupBy.Quarters) { fields.Add(AddField(eDateGroupBy.Quarters, startDate, endDate, ref firstField)); } //Years if ((groupBy & eDateGroupBy.Years) == eDateGroupBy.Years) { fields.Add(AddField(eDateGroupBy.Years, startDate, endDate, ref firstField)); } if (fields.Count > 1) _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/@par", (_table.Fields.Count - 1).ToString()); if (groupInterval != 1) { _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/d:rangePr/@groupInterval", groupInterval.ToString()); } else { _cacheFieldHelper.DeleteNode("d:fieldGroup/d:rangePr/@groupInterval"); } _items = null; }