Browse Source

PageBreak

reports
Peter Forstmeier 12 years ago
parent
commit
d93d4abc33
  1. 4
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
  2. 26
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  3. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

4
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs

@ -139,7 +139,9 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer
public override string ODBCProviderName public override string ODBCProviderName
{ {
get { return "SQLNCLI10.1"; } // SqlServer 2012
// get { return "SQLNCLI10.1"; }
get { return "SQLNCLI11.0"; }
} }
public override void PopulateDatasources() public override void PopulateDatasources()

26
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -69,7 +69,8 @@ namespace ICSharpCode.Reporting.PageBuilder
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height); ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var pageFooter = CreateSection(ReportModel.PageFooter,CurrentLocation); var pageFooter = CreateSection(ReportModel.PageFooter,CurrentLocation);
DetailEnds = new Point(pageFooter.Location.X,pageFooter.Location.Y -1); // DetailEnds = new Point(pageFooter.Location.X,pageFooter.Location.Y -1);
DetailEnds = new Point(pageFooter.Location.X + pageFooter.Size.Width,pageFooter.Location.Y -1);
AddSectionToPage(pageFooter); AddSectionToPage(pageFooter);
} }
@ -101,7 +102,6 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
protected bool old_PageFull(System.Collections.Generic.List<IExportColumn> columns) protected bool old_PageFull(System.Collections.Generic.List<IExportColumn> columns)
{ {
var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size); var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size);
@ -114,9 +114,22 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
protected bool PageFull(IExportContainer row) { protected bool old_1_PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(row.Location,row.DesiredSize); var rectToPrint = new Rectangle(row.Location,row.DesiredSize);
Console.WriteLine("{0} - {1}",rectToPrint.Bottom.ToString(),DetailEnds.Y);
if (rectToPrint.Bottom > DetailEnds.Y) { if (rectToPrint.Bottom > DetailEnds.Y) {
Console.WriteLine("-----------PB----------");
return true;
}
return false;
}
protected bool PageFull(IExportContainer row) {
var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y),
row.DesiredSize);
if (!DetailsRectangle.Contains(rectToPrint)) {
return true; return true;
} }
return false; return false;
@ -190,6 +203,13 @@ namespace ICSharpCode.Reporting.PageBuilder
internal Point DetailEnds {get; private set;} internal Point DetailEnds {get; private set;}
internal Rectangle DetailsRectangle {
get {
var s = new Size(DetailEnds.X - DetailStart.X,DetailEnds.Y - DetailStart.Y);
return new Rectangle(DetailStart,s);
}
}
protected Graphics Graphics {get;private set;} protected Graphics Graphics {get;private set;}
public Collection<ExportPage> Pages {get; private set;} public Collection<ExportPage> Pages {get; private set;}

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -111,7 +111,7 @@ namespace ICSharpCode.Reporting.PageBuilder
var row = CreateContainerIfNotExist(CurrentSection,detail, position); var row = CreateContainerIfNotExist(CurrentSection,detail, position);
collectionSource.Fill(CurrentSection.Items); collectionSource.Fill(CurrentSection.Items);
//var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row); //var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row,position); var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
MeasureAndArrangeContainer(converter,row); MeasureAndArrangeContainer(converter,row);
@ -135,7 +135,7 @@ namespace ICSharpCode.Reporting.PageBuilder
MeasureAndArrangeContainer(converter,row); MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate); row.ExportedItems.AddRange(recreate);
} }
*/ */
if (old_PageFull(convertedItems)) { if (old_PageFull(convertedItems)) {
InsertDetailAtPosition(detail); InsertDetailAtPosition(detail);
@ -148,7 +148,6 @@ namespace ICSharpCode.Reporting.PageBuilder
row = CreateContainerIfNotExist(CurrentSection,detail,position); row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position); var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
// var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row); MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate); row.ExportedItems.AddRange(recreate);
} }
@ -159,7 +158,6 @@ namespace ICSharpCode.Reporting.PageBuilder
while (collectionSource.MoveNext()); while (collectionSource.MoveNext());
InsertDetailAtPosition(detail); InsertDetailAtPosition(detail);
// base.BuildReportFooter();
} else { } else {
detail = CreateContainerForSection(DetailStart); detail = CreateContainerForSection(DetailStart);
@ -172,8 +170,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildDetail() void BuildDetail()
{ {
var converter = new ContainerConverter(base.Graphics, CurrentLocation); var converter = new ContainerConverter(base.Graphics, CurrentLocation);
// var position = DetailStart; var position = ResetPosition();
var position = new Point(DetailStart.X,1);
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings); var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
CurrentSection = ReportModel.DetailSection; CurrentSection = ReportModel.DetailSection;
@ -184,14 +181,10 @@ namespace ICSharpCode.Reporting.PageBuilder
detail = CreateDetail(DetailStart); detail = CreateDetail(DetailStart);
do { do {
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
collectionSource.Fill(CurrentSection.Items); collectionSource.Fill(CurrentSection.Items);
var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(convertedItems);
var row = CreateAndArrangeContainer(converter,position,detail);
Console.WriteLine("position {0}",position);
if (PageFull(row)) { if (PageFull(row)) {
InsertDetailAtPosition(detail); InsertDetailAtPosition(detail);
Pages.Add(CurrentPage); Pages.Add(CurrentPage);
@ -200,11 +193,7 @@ namespace ICSharpCode.Reporting.PageBuilder
position = ResetPosition(); position = ResetPosition();
detail = CreateDetail(DetailStart); detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
row = CreateAndArrangeContainer(converter,position,detail);
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
} }
detail.ExportedItems.Add(row); detail.ExportedItems.Add(row);
@ -221,6 +210,16 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
IExportContainer CreateAndArrangeContainer(ContainerConverter converter, Point position,IExportContainer parent)
{
var row = CreateContainerIfNotExist(CurrentSection, parent, position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection, row);
MeasureAndArrangeContainer(converter, row);
row.ExportedItems.AddRange(recreate);
return row;
}
IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position) IExportContainer CreateContainerIfNotExist(IReportContainer container, IExportContainer parent, Point position)
{ {
var isContainer = container.Items[0] is IReportContainer; var isContainer = container.Items[0] is IReportContainer;
@ -248,7 +247,7 @@ namespace ICSharpCode.Reporting.PageBuilder
Point ResetPosition () { Point ResetPosition () {
return DetailStart; return new Point(DetailStart.X,1);
} }
@ -277,7 +276,6 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
// internal IReportContainer Container { get; private set; }
internal IReportContainer CurrentSection { get; private set; } internal IReportContainer CurrentSection { get; private set; }
public IEnumerable List {get; private set;} public IEnumerable List {get; private set;}

Loading…
Cancel
Save