阅读:3990
回复:9
|
[已解决]打印模板如何显示数据字典字段的显示值
如图表单使用打印模板进行打印
显示的字段有些是从数据字典取值的,存在数据库的是值而不是显示文本,如何才能取到显示值? @岩竹玉雨 图片:火狐截图_2016-12-15T05-47-06.917Z.png |
1楼#
发布于:2016-12-15 15:27
谢谢,简单点的做法是值和显示设成一样了。
根据@岩竹玉雨 提供的建议,修改了SheetPrint.aspx.cs,毕竟有些数据字典不是单独BPM系统用,别的系统数据传递也用到。 根据审批意见获取代码的修改而来,代码如下
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; } 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用于标识数据字典字典,后面带数据字典的名称,不要分号。 |
|
2楼#
发布于:2016-12-15 15:34
岩竹玉雨:可参考帖子:http://bbs.h3bpm.com/read.php?tid=1323&fid=8打印模板是一个静态的html,字段绑定是通过{字段编码}来绑定的。子表数据要加<Row>{子表.字段编码}</Row>另外有两个问题想问一下 1/如何显示当前的打印时间? 2/如何显示明细表的序号字段? 图片:火狐截图_2016-12-15T07-36-04.204Z.png |
|
3楼#
发布于:2016-12-15 15:52
|
|
4楼#
发布于:2016-12-15 16:35
|
|
5楼#
发布于:2016-12-15 17:32
|
|