WinFramework轻量级开发框架 - 开发报表打印功能
目录
操作步骤:
1. 设置窗体权限值(FormAuthority属性)
在报表界面(采购订单frmPO)添加报表打印权限,常量:FunctionAuthorityCommon.PREVIEW
C# 全选
protected override int FormAuthority
{
get
{
return base.FormAuthority + FunctionAuthorityCommon.PREVIEW;
}
}
2. 重写功能窗体的 DoPreview方法
C# 全选
/// <summary>
/// 打印预览
/// </summary>
protected override void DoPreview(object sender)
{
if (gvMainData.FocusedRowHandle < 0) return;
string docno = gvMainData.GetFocusedRowCellValue(tb_PO.DocNo) + "";
DataSet ds = bll.DoGetDocData(docno);
bool v = ((int)Models.DocType.提交).Equals(ds.Tables[tb_PO._TableName].Rows[0][tb_PO.DocType]);
if (v == false)
{
Msg.Warning("当前单据未提交,不允许打印!");
return;
}
string filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports\\rpt_PO.frx");
RptCommonMainDetail rptHelper = new RptCommonMainDetail(this, filename, ds.Tables[tb_PO._TableName], ds.Tables[tb_PODetail._TableName]);
rptHelper.BeforePrepare += RptHelper_BeforePrepare;
ReportServer.frmRptPreview.ShowForm(rptHelper);
}
3. 其他报表处理,实现BeforePrepare事件
C# 全选
/// <summary>
/// 其他处理,人民币转大写
/// </summary>
/// <param name="rpt"></param>
private void RptHelper_BeforePrepare(global::FastReport.Report rpt)
{
var dt = rpt.GetDataSource("D").Reference as DataTable;
decimal total = 0;
if (dt.Rows.Count > 0)
{
total = (decimal)dt.Compute($"SUM({Models.tb_PODetail.Amount})", "1=1");
}
var PrintUser = rpt.Parameters.FindByName("TotalAmount");
string str = WinFramework.Common.RMBConverter.toRMB(total);
if (PrintUser != null) PrintUser.Value = str;
}
4. 报表模板设计
报表模板文件存放位置:程序目录 \ reports \rpt_PO.frx
5. 打印报表测试
打开【采购订单】,点击【打印预览】按钮。
6. 报表预览窗体
打印预览窗体功能:
- 打印:打印当前报表
- 设计:实时设计报表
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
WinFramework C/S框架网