Browse Source

PageBreakOnGroupChange

pull/2/head
peterforstmeier 15 years ago
parent
commit
d6807302a7
  1. 12
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs
  2. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs
  3. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupedRow.cs
  4. 31
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs
  5. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  6. 46
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

12
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs

@ -27,7 +27,8 @@ namespace ICSharpCode.Reports.Addin
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow)); TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow));
} }
[Category("Behavior")]
public bool PageBreakOnGroupChange {get;set;}
} }
@ -83,16 +84,17 @@ namespace ICSharpCode.Reports.Addin
prop = props.Find("Controls",true); prop = props.Find("Controls",true);
allProperties.Add(prop); allProperties.Add(prop);
/*
prop = props.Find("Padding",true);
allProperties.Add(prop);
*/
prop = props.Find("AlternateBackColor",true); prop = props.Find("AlternateBackColor",true);
allProperties.Add(prop); allProperties.Add(prop);
prop = props.Find("ChangeBackColorEveryNRow",true); prop = props.Find("ChangeBackColorEveryNRow",true);
allProperties.Add(prop); allProperties.Add(prop);
prop = props.Find("PageBreakOnGroupChange",true);
allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray()); return new PropertyDescriptorCollection(allProperties.ToArray());
} }
} }

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs

@ -91,10 +91,8 @@ namespace ICSharpCode.Reports.Addin
[Browsable(true), [Browsable(true),
Category("Appearance"), Category("Appearance"),
Description("String to format Number's Date's etc")] Description("String to format Number's Date's etc")]
[DefaultValue("entry1")] [DefaultValue("entry1")]
[TypeConverter(typeof(FormatStringConverter))]
[TypeConverter(typeof(FormatStringConverter))]
public string FormatString { public string FormatString {
get { return formatString; } get { return formatString; }

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupedRow.cs

@ -17,7 +17,8 @@ namespace ICSharpCode.Reports.Core
{ {
public BaseGroupedRow():base() public BaseGroupedRow():base()
{ {
Console.WriteLine("Constr baseGroupedrow");
} }
public bool PageBreakOnGroupChange {get;set;}
} }
} }

31
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs

@ -49,7 +49,8 @@ namespace ICSharpCode.Reports.Core
public bool HasMoreData { public bool HasMoreData {
get { get {
if (this.CurrentRow < this.Count -1 ){ if (this.CurrentRow < store.IndexList.Count +1 ){
// if (this.CurrentRow < this.Count -1 ){
return true; return true;
} else { } else {
return false; return false;
@ -68,6 +69,7 @@ namespace ICSharpCode.Reports.Core
public bool IsSorted {get {return this.store.IsSorted;}} public bool IsSorted {get {return this.store.IsSorted;}}
public bool IsGrouped {get {return this.store.IsGrouped;}} public bool IsGrouped {get {return this.store.IsGrouped;}}
@ -110,33 +112,6 @@ namespace ICSharpCode.Reports.Core
} }
} }
/*
public int ChildListCount
{
get {
return BuildChildList().Count;
}
}
*/
// at the moment only tables are working
/*
public void FillChild (ReportItemCollection collection)
{
TableStrategy tableStrategy = store as TableStrategy;
foreach (var item in collection) {
IDataItem dataItem = item as IDataItem;
if (dataItem != null) {
CurrentItemsCollection currentItemsCollection = tableStrategy.FillDataRow(ce.Current.ListIndex);
CurrentItem s = currentItemsCollection.FirstOrDefault(x => x.ColumnName == dataItem.ColumnName);
dataItem.DBValue = s.Value.ToString();
}
}
}
*/
private IndexList BuildChildList() private IndexList BuildChildList()
{ {

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs

@ -104,10 +104,10 @@ namespace ICSharpCode.Reports.Core
public override void Group () public override void Group ()
{ {
base.Group(); base.Group();
IndexList gl = new IndexList("group"); IndexList sortedIndexList = new IndexList("group");
gl = this.BuildSortIndex (ReportSettings.GroupColumnsCollection); sortedIndexList = this.BuildSortIndex (ReportSettings.GroupColumnsCollection);
ShowIndexList(gl); ShowIndexList(sortedIndexList);
BuildGroup(gl); BuildGroup(sortedIndexList);
} }

46
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -102,12 +102,24 @@ namespace ICSharpCode.Reports.Core.Exporter
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) { if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
base.BuildNewPage(exporterCollection,section); ForcePagePreak (exporterCollection,section);
// base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition (); currentPosition = CalculateStartPosition ();
} }
} }
while ( childNavigator.MoveNext()); while ( childNavigator.MoveNext());
if (PageBreakAfterGroupChange(section) ) {
var b = base.DataNavigator.HasMoreData;
Console.WriteLine("datanav {0}",b);
ForcePagePreak (exporterCollection,section);
Console.WriteLine ("PageBreakaftrer");
currentPosition = CalculateStartPosition ();
}
var groupedRow = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList());
base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator; base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator;
} }
} }
@ -119,12 +131,13 @@ namespace ICSharpCode.Reports.Core.Exporter
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
base.BuildNewPage(exporterCollection,section); ForcePagePreak (exporterCollection,section);
currentPosition = CalculateStartPosition(); currentPosition = CalculateStartPosition();
} }
ShouldDrawBorder (section,exporterCollection); ShouldDrawBorder (section,exporterCollection);
} }
while (base.DataNavigator.MoveNext()); while (base.DataNavigator.MoveNext());
@ -136,18 +149,35 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
void ForcePagePreak(ExporterCollection exporterCollection, BaseSection section)
{
base.BuildNewPage(exporterCollection,section);
}
bool PageBreakAfterGroupChange(BaseSection section)
{
var groupedRowCollection = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList());
var groupedRow = groupedRowCollection[0];
Console.WriteLine(base.DataNavigator.HasMoreData);
return groupedRow.PageBreakOnGroupChange;
}
private Point CalculateStartPosition() private Point CalculateStartPosition()
{ {
return new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y); return new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y);
} }
private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset) private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
{ {
Point retVal = Point.Empty; Point retVal = Point.Empty;
ReportItemCollection groupCollection = null; ReportItemCollection groupCollection = null;
var grh = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList()); var groupedRow = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList());
if (grh.Count == 0) { if (groupedRow.Count == 0) {
groupCollection = section.Items.ExtractGroupedColumns(); groupCollection = section.Items.ExtractGroupedColumns();
base.DataNavigator.Fill(groupCollection); base.DataNavigator.Fill(groupCollection);
base.FireSectionRendering(section); base.FireSectionRendering(section);
@ -155,11 +185,11 @@ namespace ICSharpCode.Reports.Core.Exporter
StandardPrinter.EvaluateRow(base.Evaluator,list); StandardPrinter.EvaluateRow(base.Evaluator,list);
mylist.AddRange(list); exportList.AddRange(list);
AfterConverting (section,list); AfterConverting (section,list);
retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer));
} else { } else {
retVal = ConvertStandardRow(mylist,section,grh[0],leftPos,offset); retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset);
} }
return retVal; return retVal;
} }

Loading…
Cancel
Save