Browse Source

PageBreak

reports
Peter Forstmeier 12 years ago
parent
commit
d93d4abc33
  1. 4
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
  2. 28
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  3. 42
      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 @@ -139,7 +139,9 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer
public override string ODBCProviderName
{
get { return "SQLNCLI10.1"; }
// SqlServer 2012
// get { return "SQLNCLI10.1"; }
get { return "SQLNCLI11.0"; }
}
public override void PopulateDatasources()

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

@ -69,7 +69,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -69,7 +69,8 @@ namespace ICSharpCode.Reporting.PageBuilder
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
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);
}
@ -101,7 +102,6 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -101,7 +102,6 @@ namespace ICSharpCode.Reporting.PageBuilder
}
protected bool old_PageFull(System.Collections.Generic.List<IExportColumn> columns)
{
var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size);
@ -114,9 +114,22 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -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);
if (rectToPrint.Bottom > DetailEnds.Y) {
Console.WriteLine("{0} - {1}",rectToPrint.Bottom.ToString(),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 false;
@ -190,6 +203,13 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -190,6 +203,13 @@ namespace ICSharpCode.Reporting.PageBuilder
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;}
public Collection<ExportPage> Pages {get; private set;}

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

@ -111,7 +111,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -111,7 +111,7 @@ namespace ICSharpCode.Reporting.PageBuilder
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
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);
MeasureAndArrangeContainer(converter,row);
@ -135,8 +135,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -135,8 +135,8 @@ namespace ICSharpCode.Reporting.PageBuilder
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
*/
*/
if (old_PageFull(convertedItems)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
@ -148,7 +148,6 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -148,7 +148,6 @@ namespace ICSharpCode.Reporting.PageBuilder
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row,position);
// var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
}
@ -159,7 +158,6 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -159,7 +158,6 @@ namespace ICSharpCode.Reporting.PageBuilder
while (collectionSource.MoveNext());
InsertDetailAtPosition(detail);
// base.BuildReportFooter();
} else {
detail = CreateContainerForSection(DetailStart);
@ -168,12 +166,11 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -168,12 +166,11 @@ namespace ICSharpCode.Reporting.PageBuilder
}
}
void BuildDetail()
{
var converter = new ContainerConverter(base.Graphics, CurrentLocation);
// var position = DetailStart;
var position = new Point(DetailStart.X,1);
var position = ResetPosition();
var collectionSource = new CollectionSource(List,ElementType,ReportModel.ReportSettings);
CurrentSection = ReportModel.DetailSection;
@ -184,14 +181,10 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -184,14 +181,10 @@ namespace ICSharpCode.Reporting.PageBuilder
detail = CreateDetail(DetailStart);
do {
var row = CreateContainerIfNotExist(CurrentSection,detail, position);
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)) {
InsertDetailAtPosition(detail);
Pages.Add(CurrentPage);
@ -200,13 +193,9 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -200,13 +193,9 @@ namespace ICSharpCode.Reporting.PageBuilder
position = ResetPosition();
detail = CreateDetail(DetailStart);
CurrentLocation = DetailStart;
row = CreateContainerIfNotExist(CurrentSection,detail,position);
var recreate = converter.CreateConvertedList(ReportModel.DetailSection,row);
MeasureAndArrangeContainer(converter,row);
row.ExportedItems.AddRange(recreate);
row = CreateAndArrangeContainer(converter,position,detail);
}
detail.ExportedItems.Add(row);
position = new Point(CurrentSection.Location.Y,position.Y + CurrentSection.Size.Height);
}
@ -220,6 +209,16 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -220,6 +209,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)
{
@ -248,7 +247,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -248,7 +247,7 @@ namespace ICSharpCode.Reporting.PageBuilder
Point ResetPosition () {
return DetailStart;
return new Point(DetailStart.X,1);
}
@ -277,7 +276,6 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -277,7 +276,6 @@ namespace ICSharpCode.Reporting.PageBuilder
}
// internal IReportContainer Container { get; private set; }
internal IReportContainer CurrentSection { get; private set; }
public IEnumerable List {get; private set;}

Loading…
Cancel
Save