zoukankan      html  css  js  c++  java
  • 流程表单配置时打印模板如何显示数据字典字段的显示值?

    问题:

    如图表单使用打印模板进行打印

    显示的字段有些是从数据字典取值的,存在数据库的是值而不是显示文本,如何才能取到显示值?

     

     

    打印模板是一个静态的html,字段绑定是通过{字段编码}来绑定的。子表数据要加<Row>{子表.字段编码}</Row>

    关于数据字典中的值,在提交保存表单时,数据会写入到业务表中。如果你存入的是一个编码代号之类的值。却要显示正常的文字的话。

    目前我不知道H3bpm是怎么处理的,刚看了SheetPrint.aspx.cs文件,关于数据字典没有处理。

    综上所述,所以我建议把数据字典的编码和要显示的文字写成一样。

    或者有能力者可以修改SheetPrint.aspx.cs,对值进行判断查询替换。

     

    根据审批意见获取代码的修改而来,代码如下

    增加获取字典函数

     

    private Dictionary<string, EnumerableMetadata[]> DicMetadata = new Dictionary<string, EnumerableMetadata[]>();

    /// <summary>

            /// 获取数据字典

            /// </summary>

            /// <param name="category" />数据字典名称</param />

            /// <returns></returns>

            private EnumerableMetadata[] GetEnum(string category)

            {

                string key = category;

                if (DicMetadata.ContainsKey(key)) return DicMetadata[key];

                EnumerableMetadata[] byCategory = this.Engine.MetadataRepository.GetByCategory(key);

                DicMetadata.Add(key, byCategory);

                return byCategory;

            }

     

    主表字段修改代码

    GetFieldValue函数的

    case Data.DataLogicType.String:

    case Data.DataLogicType.ShortString:

    下增加如下代码

     

     

    string category = string.Empty;

                        if (param.ToLower().StartsWith("enum:"))

                        {

                            category = param.Substring(param.IndexOf(":") + 1);

                            var metadata = GetEnum(category);

                            if (metadata != null)

                            {

                                result = metadata.FirstOrDefault(x => x.Code.Equals(data.Value)).EnumValue + string.Empty;

                                break;

                            }

                        }

                        result = data.Value + string.Empty;

                        break;

     

     

    打印模板中如下方式使用{PRM_Type.Enum:请购类型} 。Enum用于标识数据字典字典,后面带数据字典的名称,不要分号。

     

     

    明细表修改代码

    需要修改GetBizObjectFieldValue函数:

     

    PropertySchema property = obj.Schema.GetProperty(field);

    下增加

     

     

     

    string param = string.Empty;

                if (property == null && field.IndexOf(".") > -1)

                {

                    // 处理field逻辑

                    param = field.Substring(field.IndexOf(".") + 1);

                    field = field.Substring(0, field.IndexOf("."));

                    property = obj.Schema.GetProperty(field);

                }

     

    case Data.DataLogicType.String:

    case Data.DataLogicType.ShortString:下增加

     

     

     

    string category = string.Empty;

                        if (param.ToLower().StartsWith("enum:"))

                        {

                            category = param.Substring(param.IndexOf(":") + 1);

                            var metadata = GetEnum(category);

                            if (metadata != null)

                            {

                                result = metadata.FirstOrDefault(x => x.Code.Equals(obj[field])).EnumValue + string.Empty;

                                break;

                            }

                        }

                        result = obj[field] + string.Empty;

                        break;

     

    打印模板中如下方式使用{PROrderDtl.PRD_BuyStatus.Enum:购买状态} 。Enum用于标识数据字典字典,后面带数据字典的名称,不要分号。

  • 相关阅读:
    检测是否安装有sim卡
    APPDelegate----launchOptions启动类型
    UIActionSheet 传值
    简单介绍以下几个宏
    Django Rest Framework 认证组件
    Django Rest Framework 序列化接口使用视图组件Viewset优化(最终版优化)!
    Django Rest Framework 使用mixins模块优化序列化接口 (get-post-put-delete)
    Django Rest Framework 序列化接口(PUT与Delete)设计 (前期版)!
    Django Rest Framework 序列化接口(GET与POST)设计 (前期版)!
    Django ORM各种查询
  • 原文地址:https://www.cnblogs.com/1774bpm/p/6186042.html
Copyright © 2011-2022 走看看