打印开发框架

栏目:u9cloud知识作者:用友来源:用友发布:2024-08-20浏览:1

打印开发框架

概述

  1. U9打印分类 
    1. 列表打印 
    2. 查询打印 
    3. 简单单据打印 
    4. 单据打印

 

  1. U9输出UI风格 

  1. U9打印UI风格
    1. 台头示例代码 

  有两种风格,一种是列表和查询的打印风格,一种是单据的打印风格。

技术框架

开发流程

列表和查询

开发流程

步骤一:列表和查询的UIModel创建时设置输出和打印动作组参数

输出

OnOutPut_Extend()

注意:需要增加如下设置:

代码模版:./UITpls/UICommonAction.tpl

模版参数:OnOutPut

打印

OnPrint_Extend()

注意:需要增加如下设置:

代码模版:./UITpls/UICommonAction.tpl

模版参数:OnPrint

 

 

列表和查询自动生成导出与打印代码如下:

 

private void OnOutPut_Extend(object sender, UIActionEventArgs e) 

       //调用模版定义的默认实现方法.如需扩展,请直接在此编程. 

       this.OnOutPut_DefaultImpl(sender,e) ;           

 

private void OnPrint_Extend(object sender, UIActionEventArgs e)

{

       //调用模版定义的默认实现方法.如需扩展,请直接在此编程.

        this.OnPrint_DefaultImpl(sender,e) ;

 

步骤二、根据实际情况开发人员写自己扩展打印代码

对于正常的一般的列表,步骤二是不需要的

 

对于根据DTO方式创建的查询,数据需要准备

private void OnOutPut_Extend(object sender, UIActionEventArgs e)

  {

            //调用模版定义的默认实现方法.如需扩展,请直接在此编程.           

            IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

            settings.PrintData =QryBPExportService.GetInstance(….). GetResultSet();

            e.Tag = settings;

            this.OnOutPut_DefaultImpl(sender, e);

 

private void OnPrint_Extendobject sender, UIActionEventArgs e)

  {

            //调用模版定义的默认实现方法.如需扩展,请直接在此编程.           

            IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

            settings.PrintData = QryBPExportService.GetInstance(….). GetResultSet();

            e.Tag = settings;

            this. OnPrint_DefaultImpl(sender, e);

 

列表打印用户扩展代码示例

如果有如下需求, 需要加扩展代码。

 

  1. 标题布局设置示例代码 
  2. 用户标题示例代码 
  3. 隐藏用户标题 
  4. 传递默认DataGrid名称 
  5. 传递打印数据 
  6. 含自定义列的DataGrid输出与打印 
  7. 当前DataGrid数据打印(当前页)
  8.  

台头示例代码

   用途:简单单据单据打印,仅需增加布局没有苛刻要求的台头。

 

如在打印动作中增加台头支持,开发人员可在OnPrint_Extend函数中增加代码,如

private void OnPrint_Extend(object sender, UIActionEventArgs e)

{

        IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

 

            //列表台头

           settings.HeadLineList.AddHeadLine("用户:", "mwh");

           settings.HeadLineList.AddHeadLine("部门:", "UBF平台技术部");

           settings.HeadLineList.AddHeadLine("公司:", "用友软件公司");

            e.Tag = settings;

 

              //调用模版定义的默认实现方法.如需扩展,请直接在此编程.

              this.OnPrint_DefaultImpl(sender,e) ;           

     }

 

增加的代码必须在默认实现方法之前设置。IExportSettings中的HeadLineList设置台头值对。HeadLineList为IHeadLineList对象

   关键属性:

      HeadColumns:一行中栏目个数,默认3行,开发人员可进行设置

      InterWidth:台头栏目间距,0.1mm单位,默认50,即5mm,开发人员可进行设置

关键方法:

  AddHeadLine(string headLabel,string headValue);设置台头标签及data

 

用户标题示例代码

 

列表导出与打印的模板是自动生成的,目前默认自动生成模板对于标题布局的规范是居中。如果某列表的标题必须定义其他布局方式,如居左,开发人员在打印或输出扩展可如下增加代码:

 

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

settings.TileAlignment= TileAlignment.Left;

e.Tag = settings;

 

其他见台头示例代码

 

事后处理事件

对于列表/查询/单据的输出与打印,若需事后处理程序,如需要根据成败进行必要的次数统计时,如统计打印份数,可如下处理:

在打印和导出扩展事件里的默认生成代码之前增加:

 

            IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

            settings. new FinishCallBackHandle(this.OnExportFinished);

          ….                   //其他用户代码 

            e.Tag = settings;

 

增加事后处理函数

this.OnOutPut_DefaultImpl(sender,e) ;

 

        privatevoid OnExportFinished(object sender, FinishCallEventArgs args)

        {

            if (args.ExportStatus == ExportStatus.Sucess)

            {

//增加用户代码

            }

        }

标题布局设置示例代码

列表导出与打印的模板是自动生成的,目前默认自动生成模板对于标题布局的规范是居中。如果某列表的标题必须定义其他布局方式,如居左,开发人员在打印或输出扩展可如下增加代码:

 

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

settings.TileAlignment= TileAlignment.Left;

e.Tag = settings;

 

其他见台头示例代码

含自定义列的DataGrid输出与打印

默认列表打印与输出数据输出为当前列表内容的全部数据内容,非当前页内容。因此数据要通过UIView对应的实体的OQL重新从数据库中读取,这种情况会使自定义列内容不能显示(因为OQL中不包含自定义列)。解决办法有两种:

 

  1. 用户在运行其组织数据DataSet。参考传递打印数据

 

  1. 只打印当前DataGrid数据内容(适用于当前DataGrid显示了所有该显示的数据)

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

settings.OnlyCurrentPageData= true;

e.Tag = settings;

其他见台头示例代码

传递打印数据

如果用户打印的不是当前页面的某个DataGrid的数据,用户可以设置自己的打印数据DataSet,传递数据的数据分为两种形式

  1. 传递的数据即为要打印的数据,如枚举值已经转换成对应的显示名称,布尔类型也已转换成同列表Grid显示一致的形式

此时需要自己设置简单的打印样式(如列宽,标题,台头,行高,每列的布局等),自己可参考列表给出打印相关信息如下:

 

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

//准备打印数据,可打印数据,不需要再转换

settings.PrintData=

//行高,像素单位,若不设置,取系统默认20像素

settings.RowHeight=

//列名,如不设,取DataTable的Column的显示名称(caption),用户可参考当前列表DataGrid的对应列的Caption进行设置

settings.ColumnsName.Add(列名1)

settings.ColumnsName.Add(列名2)

…..

//列宽,如不设,取系统默认200像素,开发人员可参考当前列表DataGrid的对应列的列宽

settings.ColumnsWidth.Add(列宽1)

settings.ColumnsWidth.Add(列宽2)

//每列的布局方式,如不设,根据DataTable对应数据类型获取默认布局,开发人员可根据列表对应列的布局进行设置

settings.ColumnsAlignment.Add(TextAlignment.Left),

settings.ColumnsAlignment.Add(TextAlignment.Center),

settings.ColumnsAlignment.Add(TextAlignment.Right),

//标题,开发人员可参考当前主View的显示名称,如不设取默认值“列表打印”

settings.Title=

//标题布局,如不设,居中显示

settings.TileAlignment=

 

//设置DataGrid的名称,由于不需要DataGrid进行数据转换与格式化,必须设一个不存在的DataGrid名称。否则会根据UIDataGrid进行数据转换与格式化

settings. UIDataGridName= “DataGrid0”;

 

e.Tag = settings;

 

  1. 传递的打印数据为原始数据,具体显示还要根据当前列表中的DataGrid进行过滤和转换,如枚举值为数据,布尔类型为true和false,需要根据列表中的枚举列进行显示转换。格式也要根据当前列表中列样式进行设置,如列宽,列显示名称。

适合情况:列表含自定义列同时数据又有多页的情况

 

IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();

//准备原始打印数据,,需要根据DataGrid进行过滤和转换,如用户准备数据列多,而打印列少或需要枚举转换等

settings.PrintData=

 

//设置DataGrid名称,如是默认的”DataGrid1”,不需设置

settings. UIDataGridName= “DataGrid0”;

 

e.Tag = settings;

 

 

其他见台头示例代码

 

列表打印的适用范围与局限性

列表打印适用于:

  1. 标准查询或列表页面的打印
  2. 简单页面数据输出打印,此页面含一个要打印的DataGrid,也许含几个标签
  3. 复杂页面,没有严格的打印样式规范的需求,只需用将数据输出即可。自己组织打印数据及简单格式,参考传递打印数据

 

局限性:

  1. 如果页面含有几个列表,只有一个打印/输出控制菜单,还必须每个列表都要按页面显示样式进行输出,目前不支持!

复杂的单据打印、有严格打印样式需求的不能通过列表打印完成

 

单据打印

开发流程

单据打印流程:

  1. UIModel打印参数设置,同列表和查询
  2. 打印模板设计
  3. 发布打印模板
  4. 创建打印参照
  5. 打印运行时数据准备及打印分类标识设定

 

打印模板设计

  1. 数据查询设计 
    1. 创建数据源 
    2. 创建数据查询(BE数据查询) 
    3. 设置查询BE主实体及选择要查询的实体属性 
    4. 执行预览操作 
  2. 布局设计 
    1. 数据绑定 
    2. 格式化与精度设置 
    3. 函数支持
    4. 快速布局

打印模板发布

  1. 打印分类目录创建 
  2. 打印模型容器创建 
  3. 打印模板发布

打印参照创建

  1. 设计阶段创建打印参照对打印模型验证 
  2. 构造阶段打印参照数据预制(加入构造) 
    1. 运行UBFSTUDIO
    2. 打开报表打印工程 
    3. 运行报表、打印元数据管理 
    4. 连接打印元数据 
    5. 选择打印元数据导出节点进行导出 
    6. 将导出的文件拷贝的U9Data视图特定位置: 

U9.VOB.Data/SystemData/StdSqlScript/ReportMetaData/Print目录下 

单据打印运行时数据准备

  1. 数据准备服务IPrepareDataService 
    1. DataSet GetDataSet(IUIView parentUIView, IUIView childUIView, string tableName);
    2. DataSet GetDataSet(IUIRecord parentUIRecord, IUIView parentUIView, IUIView childUIView,IUFDataGrid childUIViewBindingGrid, string tableName);
    3. DataSet GetDataSet(List uiViews);
    4. DataSet GetDataSet(IUIView uiView);
    5. DataSet GetDataSet(string printTemplateID, FilterValues filterValues); 
  2. 函数回调获取打印数据 
  3. 运行期Context支持 
    1. 系统Context,包括用户名、代码、组织等 
    2. 自定义常量以Contexts!开头,在设计模板时直接引用,在运行期的打印扩展事件里需要赋值 

打印开发框架

概述U9打印分类 列表打印 查询打印 简单单据打印 单据打印 U9输出UI风格 U9打印UI风格台头示例代码   有两种风格,一种是列表和查...
点击下载文档
标签: # U9C
分享:
上一篇:列表开发框架下一篇:已经是最后一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息