YES-WIN winform开发框架报表打印功能开发


1. 窗体添加打印权限:

C# 全选
/// <summary>
/// 权限定义
/// </summary>
protected override void InitAuthorize()
{
	base.InitAuthorize();
	// 添加打印预览 权限
	this.FormCommonAuthority = this.FormCommonAuthority | FunctionAuthorityCommon.PREVIEW;
	// 扩展权限
	//this.AddExtensionAuthroze(FunctionAuthority.EX_01, "自定义扩展权限1");
}

2. 打印预览按钮点击事件

C# 全选
protected override void DoPreview(object sender)
{
	var current = DataSource.Current as DataListItem;
	if (current == null)
	{
		Msg.Warning("没有选择数据!");
		return;
	}
	DataDetail data = bll.GetDataDetail(new Req_ByID() { Id = current.ID });

	var rpt = ReportServer.RptHelper.CreatetMainDetail<DataDetail, DetailStatementReceivable_Details>(this, "StatementReceivable.frx", data, data.DetailStatementReceivable_Details);
	rpt.EnableDesign = true;
	rpt.EnablePrint = true;

	rpt.Priview();

}

 

---------------------------------------------------------- 历史文档备份 ----------------------------------------------------------

窗体权限设置 FormAuthority

添加报表打印权限,FunctionAuthorityCommon.PREVIEW

C# 全选
protected override int FormAuthority
{
    get
    {
        return base.FormAuthority + FunctionAuthorityCommon.PREVIEW;
    }
}

重写功能窗体的 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);
}
private void RptHelper_BeforePrepare(global::FastReport.Report rpt)
{
    var total = (decimal)(rpt.GetDataSource("D").Reference as DataTable).Compute($"SUM({Models.tb_PODetail.Amount})", "1=1");
    string str = WinFramework.Common.RMBConverter.toRMB(total);
    var PrintUser = rpt.Parameters.FindByName("TotalAmount");
    if (PrintUser != null) PrintUser.Value = str;
}

报表模板设计

报表模板文件存放位置:程序目录 \ reports \ ***.frx

YES-WIN winform开发框架报表打印功能开发

功能测试

YES-WIN winform开发框架报表打印功能开发

点击打印预览按钮

YES-WIN winform开发框架报表打印功能开发

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
评论列表

发表评论

评论内容
昵称:
关联文章

YES-WIN winform开发框架报表打印功能开发
YES-WIN Winform开发框架 日志管理升级指南
Winform开发框架日志管理
YESWin winform开发框架 模块功能注册配置
YES-Win Winform开发框架 自定义查询方法并在表格中展示
YESWin Winform开发框架 代码生成器使用
YES-WEB快速开发框架,.NET WEB开发平台,高效的web项目开发框架
YESWin winform开发框架 新建一个业务模块项目
Winform开发框架简介
YESWin Winform开发框架 业务模块项目模板制作
YES开发框架教程--新增一个账套
FastReport 打印多张报表合并打印
YESWin Winform开发框架 项目初始化配置并运行
YESWinform开发框架关于模块功能不同权限下的布局介绍
YES-WEB开发框架 VS中配置代码生成器快捷按钮
FastReport 合并多个报表,一次打印多个rpt文件
YES.PlanManage 一款强大的 .NET 定时计划管理 服务框架
ABP VNext框架Winform终端的开发和客户端授权信息的处理
企业项目实战.Net Core +FastReport教程一|制作报表模板
YESWin winform开发框架 开发环境搭建指南