1、选择项目负责人后,自动在团队成员中增加项目负责人,并且不能删除:
这涉及到2个操作:
1)、自动把项目负责人加入到团队成员列表
这要用到E6的fillGrid()这个JS接口方法,在“项目负责人”这个引用字段的“选择后事件”中增加Javascript脚本:
脚本如下:由于项目负责人引用的是员工表单(Employee),所以可以通过getvalue("__FK_Employee_")获得选择后的项目负责人记录ID,通过getvalue("Employee___Name__")获得选择后的项目负责人姓名。这些都可以字段名都可以通过查看浏览器读取数据时候的返回JSON中进行查看。inputData的rows中提供的字段名,就是“团队成员”这个可编辑子表的字段名,可以在浏览器中,单据页面,右键“查看框架的源代码”中进行查看。
var paramData = { "billid": "当前主单据编号", "gridbillid": "团队成员可编辑子表“子单据ID”", "gridid":"团队成员可编辑子表“子单据ID”", "rowIdx":"0" }; var id = getvalue("__FK_Employee_"); var name = getvalue("Employee___Name__"); var inputData = { "团队成员可编辑子表“子单据ID”": { "rows": [ {"__FK_Employee_": id, "Employee___Name__": name }, ] } } $.bo.fillGrid(paramData , inputData);
2)、团队成员列表中,项目负责人这一行的“操作列”不能删除:
这就要在“团队成员”可编辑子表的“操作列格式化”属性中添加格式化脚本:
加入下列脚本。row["__FK_Employee_"]表示团队成员可编辑子表中的成员引用数据ID字段(这是个隐藏字段),getvalue("__FK_Employee_")表示获取项目负责人的ID值。在E6中,只要A单据(不论是主单据还是可编辑子表中)引用了B单据字段,则A单据中一定有一个引用ID字段:__FK_B_。
if(row["__FK_Employee_"]==getvalue("__FK_Employee_")) return "";
2、按条件删除表单上的可编辑子表的行
对于复杂一些的场景,可能您需要能够比如勾选某个选项,或者某个值改变后能够删除某个可编辑子表中的行:
let grid = jQuery('#这里替换成可编辑子表的ID记得保留井号'); let rows = grid.datagrid('getRows'); jQuery.each(rows, function(idx) { let row = rows[idx]; if(row && row["这里替换成可编辑子表中的字段名"] && row["这里替换成可编辑子表中的字段名"]=="这里替换成具体的值") { delRow这里替换成可编辑子表的ID(row["__ID__"]); } });
3、页面上通过“功能按钮”调用数据库存储过程:
如果你有某个特殊的计算需求,可以通过E6插件来进行计算,或者使用数据库存储过程来进行计算(推荐)。那么我们除了可以提交单据保存的时候调用存储过程,或者执行SQL之外,E6也提供了在页面上通过“功能按钮”直接调用存储过程的功能。
假设我们有一个存储过程sp_CalcTest(SQLServer的,MySQL的类似,写法有些不同),有三个INT类型的参数A,B,C,如下图:
那么我们就可以在E6开发平台中,使用功能按钮进行调用:功能按钮属性“操作类型”设置为“脚本”,响应脚本就可以使用E6的JS接口进行调用了。
响应脚本:
procname:存储过程名;
condition:存储过程参数,是一个JSON对象,对象值可以通过getvalue("字段名")等等获得表单中的字段值;
callback:执行成功后的返回值,返回值类型可以通过浏览器F12进入开发者工具后,在Network页中进行查看;
$.bo.procedureRpcCall({ procname:'sp_CalcTest', condition:{A: '1', B: '2', C: 'c'}, callback:function(data) { console.log(data); } })