H3BPM子表的复制
在做一个流程的时候,碰到了下面的表数据直接从上表中获取,并且为不可编辑状态,没有增加和删除行的按钮。一开始使用的是ComputationRule属性,但是有一项是日期空间,没有这个属性,不知道怎么处理,下面是官方论坛给出的处理例子:
在表单中,控件类型为子表的数据项,其对于的前台代码其实就是Table
下面简单介绍遍历子表的方法
循环子表取、赋值方法:
//此方法的功能是将子表TravelExpensesList复制到子表FinancialAudit中
//步骤解析:
//1、取到子表FinancialAudit的总行数
//2、由于是将子表TravelExpensesList复制到子表FinancialAudit中,也就是子表TravelExpensesList是有值的,而子表FinancialAudit是刚初始化的,没有值,所以在同步值之前需要先要保持两个子表的行数一致,故每次循环需比较行数是否一致
//3、通过行号取到子表TravelExpensesList各列的数据值,并赋值给子表FinancialAudit
function InitFinancialAuditData() {
//取到FinancialAudit的总行数(JQuery)
var FinancialAuditLength = $("table[data-datafield='FinancialAudit']").find("tr.rows").length;
//由于是FinancialAudit向TravelExpensesList同步,所以开始遍历子表TravelExpensesList,取到每行的值再赋值到子表FinancialAudit的对应行中
$("table[data-datafield='TravelExpensesList']").find("tr.rows").each(function () {
//获取到子表TravelExpensesList当前遍历的这一行的行号
//注:一个子表就是一个table,table下面的每个tr、td都有一个属性“data-row”,它是记录当前这个tr、td所在行的行号(就是每行前面的序号)
var row = $(this).attr("data-row");
//比较当前获取的行号是否大于FinancialAudit子表的总行数,大于的话,需要FinancialAudit增加一行进行同步,不然即使两个子表的数据同步完毕,也会因为FinancialAudit的行是初始化的1行,导致第2行以及第2行之后的所有数据看不见
//当然这部分的循环添加行的方法可以用再次优化,也可提到循环外完成
if (row > FinancialAuditLength) {
//H3给子表添加行的方法,属于H3封装的方法
$("#Control23").SheetUIManager()._AddRow();
}
//同步两张表的数据
//方法$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);是用来给子表赋值的,针对子表数据;是$.MvcSheetUI.SetControlValue("参数4",参数5);的重载而$.MvcSheetUI.SetControlValue("参数4",参数5);针对的是表单数据
//$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);参数说明:
//参数1:对应你需要赋值的子表中的数据项的数据项编码
//参数2:你需要给这个数据项赋值的值
//参数3:子表行号
//方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项,进行赋值
//
//方法$.MvcSheetUI.GetControlValue("参数1",参数2);是取子表值,针对子表数据;是$.MvcSheetUI.GetControlValue("参数4");的重载而$.MvcSheetUI.SetControlValue("参数4");针对的是表单数据
//$.MvcSheetUI.SetControlValue("参数1",参数2);参数说明:
//参数1:对应你需要赋值的子表中的数据项的数据项编码
//参数2:子表行号
//方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项
$.MvcSheetUI.SetControlValue("FinancialAudit.Hyperlink", $.MvcSheetUI.GetControlValue("TravelExpensesList.Hyperlink", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.StartPlace", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartPlace", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.StartDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartDate", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.Destination", $.MvcSheetUI.GetControlValue("TravelExpensesList.Destination", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.ReturnDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.ReturnDate", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.Days", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.Customer", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.CityType", $.MvcSheetUI.GetControlValue("TravelExpensesList.CityType", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.TotalCost", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
$.MvcSheetUI.SetControlValue("FinancialAudit.AttachmentNumber", $.MvcSheetUI.GetControlValue("TravelExpensesList.AttachmentNumber", row), row);
var val = $.MvcSheetUI.GetControlValue("FinancialAudit.CheckMoney", row);
if (val != null && val != "") {
}
else {
$.MvcSheetUI.SetControlValue("FinancialAudit.CheckMoney", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
} });
//JQuery方法
//通过子表数据项编码找到子表FinancialAudit的对应列,给整个列附加上不可编辑的属性
$("input[data-datafield='FinancialAudit.Hyperlink']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.StartPlace']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.StartDate']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.Destination']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.ReturnDate']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.Days']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.Customer']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.CityType']").attr("disabled", "disabled");
$("input[data-datafield='FinancialAudit.TotalCost']").attr("disabled", "disabled");
//$("input[data-datafield='FinancialAudit.AttachmentNumber']").attr("disabled", "disabled");
}
此示例只是针对同步子表这个功能的讲解,希望大家能从这个例子中更加了解子表,并灵活运用
此示例也是较多方式中的其中一种,希望大家也不要局限于此
H3BPM子表的复制的更多相关文章
- 将表A的数据复制到表B,以及关于主表和子表的删除办法
如果表A的数据结构和表B的数据结构是一样的,字段名字可以不用相同,但是对应的数据类型是一样的 这样的情况下可以用如下的方式实现将表A的数据复制到表B INSERT INTO #TEMP2 SELECT ...
- Maximo子表中增加附件功能
附件功能的实现(详见ewell.webclient.beans.warranty.WarrantysDateBean ,ewell.webclient.beans.doclinks.custom.Ad ...
- BPM不同表单之间子表的赋值
上次写的是同一个表单的子表之间赋值,这次是不同表单之间子表的赋值 首先,我们给需要赋值的表单添加一个复制按钮 $.MvcSheet.AddAction({ Action: &qu ...
- CRM 2016 子表单中N:1关系 字段要求与新建时的关系
父表单在新建子表单项时弹出的窗口和 子表单的N:1关系是有关系的.说白了就是子表单窗体上的父表单字段是不是必填项. 关系如下: 1 非必填项 点击子表单的"+"号时,会出现look ...
- Oracle Delete inner的方式,级联删除子表的数据方式。
例子1: from table2 b where a.id=b.id) 例子2: rebatepolicy表是主表,rebatepolicyitems是从表,从表有主表的主键,现在对于主表一些条件的数 ...
- Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件
上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...
- Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能
我们经常有这样一种需求,子表里新加或修改一数值后,要马上在主表里把它们的和显示在主表上.如果用插件来实现,可以实现求和,但页面上还要刷新一下才能显示正确.这时就考虑到用JS来实现这一功能,并自动刷新页 ...
- hibernate有关联关系删除子表时可能会报错,可以用个clear避免错误
//清除子表数据 public SalesSet removeSalesSetDistributor(SalesSet salesSet ){ List<SalesSetDistributor& ...
- SQLSERVER 复制表--和复制有关的系统表
主数据库中的复制表 表名 说明 MSreplication_options 表存储供复制在内部使用的元数据. 此表存储在 master 数据库中. msdb 数据库中的复制表 表名 说明 MSagen ...
随机推荐
- Step by Step 开发dynamics CRM
这里是作为开发贴的总结. 现在plugin和workflow系列已经终结. 希望这些教程能给想入坑的小伙伴一些帮忙. CRM中文教材不多, 我会不断努力为大家提供更优质的教程. Plugin 开发系列 ...
- RecyclerView 悬浮/粘性头部效果3种方式
但是以上两种方式onDrawOver()方法实现逻辑对初次查看该段代码要花时间理解.下面代码逻辑(原理一样,同样参考大神代码)相对清晰,易理解 public class StickyDecoratio ...
- PAT 1079. Total Sales of Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- eclipsephp的环境设置
因需要研究开发opencart的插件模块,需要一套开发php的环境.这类程序就环境配置就够折腾吐血.自认为最简单的方法: 1.下载easyphp安装,这个玩意简单快捷傻瓜.米是5.38: 2.去ecl ...
- HDU 1569 方格取数(2)
方格取数(2) Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 15 ...
- Spring Cloud-Ribbon实现客户端的服务均衡(三)
客户端负载均衡与服务端负载均衡 服务端负载均衡 通过服务端负载均衡设备维护的服务清单根据算法(轮训 权重负载 流量负载)取出服务地址 进行转发 客户端负载 将指定服务的服务清单订单(注册中心)下来 在 ...
- 洛谷 P2341 BZOJ 1051 [HAOI2006]受欢迎的牛
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
- 1012关于SYSBENCH的用法
sysbench安装.使用.结果解读 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上 ...
- 楼控-西门子insight BBMD设置
BBMD设置的目的就是让两个不同网段的设备可以同时在一个系统中访问的操作. 比如你有两个bacnet的网络,但是一个是192.168.0.1-192.168.0.255的网段,另一个是10.0.0.1 ...
- Java基础教程:tutorialspoint-spring mvc
教程: 来自turorialspoint的Spring MVC 4.1.6教程(英文),官网:https://www.tutorialspoint.com/springmvc/index.htm 离线 ...