【014】客开打印(标准代码并追加根据不同模板生成不同的文件名)
侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 2 条评论

【014】客开打印(标准代码并追加根据不同模板生成不同的文件名)

秋驰雪隙
2025-04-07 / 0 评论 / 9 阅读 / 正在检测是否收录...

打印/输出按钮添加代码

// 输出
private void OutputClick_Extend(object sender, UIActionEventArgs e)
{
    if (Print(sender, e))
    {
        //调用模版定义的默认实现方法.如需扩展,请直接在此编程.            
        this.OutputClick_DefaultImpl(sender, e);
    }
}

// 打印
private void PrintClick_Extend(object sender, UIActionEventArgs e)
{
    if (Print(sender, e))
    {
        //调用模版定义的默认实现方法.如需扩展,请直接在此编程.            
        this.PrintClick_DefaultImpl(sender, e);
    }
}

// 打印设置
private IExportSettings settings = null;
private bool Print(object sender, UIActionEventArgs e)
{
    this.CurrentModel.ClearErrorMessage();
    POFeeCheckHeadRecord focusedRecord = this.CurrentModel.POFeeCheckHead.FocusedRecord;
    if (focusedRecord == null || focusedRecord.ID <= 0) return false;
    
    settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();
    settings.PrintTemplateCatalogType = "Cust.POFeeCheckHead";  //打印模板类型  实体识别ID 
    settings.UserDataCallBack = new DataCallBackHandle(GetPrintData);
    settings.AfterLoadPrintTemplate = new PrintTemplateLoadedHandle(AfterLoadPrintTemplate);
    e.Tag = settings;

    return true;
}

// 打印输出更改文件名
private void AfterLoadPrintTemplate(object sender, PrintTemplateLoadedArgs args)
{
    if (settings == null) return;
    POFeeCheckHeadRecord focusedRecord = this.CurrentModel.POFeeCheckHead.FocusedRecord;
    if (focusedRecord == null || focusedRecord.ID <= 0) return;

    DataParamList dataParams = new DataParamList
    {
        DataParamFactory.CreateInput("ID", focusedRecord.ID, System.Data.DbType.Int64),
        DataParamFactory.CreateInput("PrintTemplateID", args.PrintTemplateID),
        DataParamFactory.CreateInput("PrintTemplateCatalogType", settings.PrintTemplateCatalogType)
    };
    DataAccessor.RunSP(DataAccessor.GetConn(), "Proc_Cust_GetPrintFileName", dataParams, out object fileName);
    if (fileName != null) settings.FileName = fileName.ToString();
}

// 获取打印数据
private void GetPrintData(object sender, DataCallBackEventArgs args)
{
    POFeeCheckHeadRecord focusedRecord = this.CurrentModel.POFeeCheckHead.FocusedRecord;
    if (focusedRecord == null || focusedRecord.ID <= 0) return;
        
    DataParamList dpl = new DataParamList
    {
        DataParamFactory.CreateInput("ID", focusedRecord.ID, System.Data.DbType.Int64),
        DataParamFactory.CreateInput("PrintTemplateID", args.PrintTemplateID)
    };
    // 调用自己的获取打印数据的存储过程
    DataAccessor.RunSP("Proc_Cust_PrintData", dpl, out System.Data.DataSet retDS);
    args.ReturnData = retDS;
}

Proc_Cust_GetPrintFileName存储过程

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        qxq
-- Create date: 2023年7月3日
-- Description:    打印输出获取文件名称Proc_Cust_GetPrintFileName
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Proc_Cust_GetPrintFileName
(
      @ID bigint -- ID
     ,@PrintTemplateID nvarchar(50)=NULL -- 打印模板ID
     ,@PrintTemplateCatalogType nvarchar(50)=NULL
)
AS
BEGIN

    SET NOCOUNT ON;
    
    -- 采购对账单
    if(@PrintTemplateCatalogType='Cust.POFeeCheckHead')
    begin
        declare @TemplateName nvarchar(500)
        select @TemplateName=TemplateName from UBF_Print_Templates where TemplateID=@PrintTemplateID and CatalogType=@PrintTemplateCatalogType

        declare @Prefix nvarchar(500)
        select @Prefix=CONCAT(supl.[Name],N' ',FORMAT(head.BusinessDate,'M月'))
        from dbo.Cust_POFeeCheckHead as head
        join dbo.CBO_Supplier_Trl as supl on supl.ID=head.Supplier and supl.SysMLFlag='zh-CN'
        where head.ID=@ID

        return concat(@Prefix,@TemplateName)
    end

END
GO

输出DataGrid

private void OutputClick_Extend(object sender, UIActionEventArgs e)
{
    IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();  
     settings.UIDataGridName = "DataGrid1";  
     e.Tag = settings; 
}
0

评论 (0)

取消