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 @@ -27,7 +27,8 @@ namespace ICSharpCode.Reports.Addin
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow));
}
[Category("Behavior")]
public bool PageBreakOnGroupChange {get;set;}
}
@ -83,16 +84,17 @@ namespace ICSharpCode.Reports.Addin @@ -83,16 +84,17 @@ namespace ICSharpCode.Reports.Addin
prop = props.Find("Controls",true);
allProperties.Add(prop);
/*
prop = props.Find("Padding",true);
allProperties.Add(prop);
*/
prop = props.Find("AlternateBackColor",true);
allProperties.Add(prop);
prop = props.Find("ChangeBackColorEveryNRow",true);
allProperties.Add(prop);
prop = props.Find("PageBreakOnGroupChange",true);
allProperties.Add(prop);
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 @@ -91,10 +91,8 @@ namespace ICSharpCode.Reports.Addin
[Browsable(true),
Category("Appearance"),
Description("String to format Number's Date's etc")]
[DefaultValue("entry1")]
[TypeConverter(typeof(FormatStringConverter))]
[TypeConverter(typeof(FormatStringConverter))]
public string FormatString {
get { return formatString; }

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

@ -17,7 +17,8 @@ namespace ICSharpCode.Reports.Core @@ -17,7 +17,8 @@ namespace ICSharpCode.Reports.Core
{
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 @@ -49,7 +49,8 @@ namespace ICSharpCode.Reports.Core
public bool HasMoreData {
get {
if (this.CurrentRow < this.Count -1 ){
if (this.CurrentRow < store.IndexList.Count +1 ){
// if (this.CurrentRow < this.Count -1 ){
return true;
} else {
return false;
@ -68,6 +69,7 @@ namespace ICSharpCode.Reports.Core @@ -68,6 +69,7 @@ namespace ICSharpCode.Reports.Core
public bool IsSorted {get {return this.store.IsSorted;}}
public bool IsGrouped {get {return this.store.IsGrouped;}}
@ -110,33 +112,6 @@ namespace ICSharpCode.Reports.Core @@ -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()
{

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

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

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

@ -102,12 +102,24 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -102,12 +102,24 @@ namespace ICSharpCode.Reports.Core.Exporter
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
base.BuildNewPage(exporterCollection,section);
ForcePagePreak (exporterCollection,section);
// base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition ();
}
}
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;
}
}
@ -119,12 +131,13 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -119,12 +131,13 @@ namespace ICSharpCode.Reports.Core.Exporter
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
base.BuildNewPage(exporterCollection,section);
ForcePagePreak (exporterCollection,section);
currentPosition = CalculateStartPosition();
}
ShouldDrawBorder (section,exporterCollection);
}
while (base.DataNavigator.MoveNext());
@ -136,18 +149,35 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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()
{
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;
ReportItemCollection groupCollection = null;
var grh = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList());
if (grh.Count == 0) {
var groupedRow = new Collection<BaseGroupedRow>(section.Items.OfType<BaseGroupedRow>().ToList());
if (groupedRow.Count == 0) {
groupCollection = section.Items.ExtractGroupedColumns();
base.DataNavigator.Fill(groupCollection);
base.FireSectionRendering(section);
@ -155,11 +185,11 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -155,11 +185,11 @@ namespace ICSharpCode.Reports.Core.Exporter
StandardPrinter.EvaluateRow(base.Evaluator,list);
mylist.AddRange(list);
exportList.AddRange(list);
AfterConverting (section,list);
retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer));
} else {
retVal = ConvertStandardRow(mylist,section,grh[0],leftPos,offset);
retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset);
}
return retVal;
}

Loading…
Cancel
Save