You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.0 KiB

using System.Collections.Generic;
using System.Linq;
using System.Windows.Documents;
using System.Windows;
using System.Data;
using System.Windows.Media;
using Utils.Datas;
namespace Utils.Printers
{
public class BillDataPaginator : DocumentPaginator
{
#region 属性及字段
private DataTable _DataTable;
private Size _PageSize;
private int _DetailMaxRows;
public override Size PageSize { get { return _PageSize; } set { _PageSize = value; } }
public override bool IsPageCountValid { get { return true; } }
public override int PageCount { get { return PageNumUtil.GetTotalPageCount(_DataTable.Rows.Count, _DetailMaxRows); } }
public override IDocumentPaginatorSource Source { get { return null; } }
private DrawPage dp;
#endregion
#region 构造函数相关方法
//构造函数
public BillDataPaginator(DataTable dt, Size pagesize, Typeface typeface, PrintInfo printInfo)
{
_DataTable = dt;
_PageSize = pagesize;
_DetailMaxRows = printInfo.;
dp = new DrawPage() {
InforsBeforeHead = printInfo.,
FontSize_InforsBeforeHead = printInfo.,
Title = printInfo. + "№" + printInfo.,
TitleFontSize = printInfo.,
TitleMarginLeft = printInfo.,
PageWidth = printInfo.,
FontSize = printInfo.,
FontSize_Footer = printInfo.,
MarginLeft = printInfo.,
MarginTop = printInfo.,
DetailMaxRows = _DetailMaxRows,
HeaderCharCount = printInfo.,
HeaderColumnsCount = printInfo.,
LineDistance = printInfo.,
TypeFace = typeface,
ShowPageNum = printInfo.,
ShowPrinter = printInfo.,
ShowPrintTime = printInfo.,
Printer = printInfo.,
AllowSum = printInfo.,
SumColumnNames = printInfo.,
InforsBeforeFooter = printInfo.,
InforsAfterFooter = printInfo.,
FontSize_InforsBeforeFooter = printInfo.,
FontSize_InforsAfterFooter = printInfo.,
};
if (printInfo. != null && printInfo..Count > 0)
foreach (var heads in printInfo.)
dp.AddHeaders(heads);
List<string> columnNames = new List<string>();
foreach (DataColumn column in dt.Columns) {
columnNames.Add(column.Caption);
}
dp.AddColumnNames(columnNames.ToArray());
foreach (DataRow row in dt.Rows) {
List<string> datas = new List<string>();
for (int i = 0; i < dt.Columns.Count; i++) {
datas.Add(row[i].ToString());
}
dp.AddRow(datas.ToArray());
}
dp.SetColumnWidths(printInfo..ToArray());
}
/// <summary>
/// 获取对应页面数据并进行相应的打印设置
/// </summary>
public override DocumentPage GetPage(int pageNumber)//pageNumber:从0开始
{
return dp.GetPage(pageNumber);
}
#endregion
}
}