E9前端的所有接口统一封装在全局对象window.WfForm中,大部分操作都可使用WfForm实现。虽然官方不建议使用jquery,但有些需求还是得靠它来实现。
- 如何实现明细字段只读、编辑、必填?
以下涉及2个场景:
一个是新增明细行时,实现属性变化;
一个是变动主表字段时,实现属性变化;
<script>
jQuery(document).ready(function(){
//明细表1,新增行触发事件
WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
var origValue = WfForm.getFieldValue("field10821"); //主表字段值
selectChange(origValue,index);
});
//绑定主表字段变更事件
WfForm.bindFieldChangeEvent("field10821", function(obj,id,value){
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
selectChange(value,rowIndex);
}
}
});
//明细行属性变更
function selectChange(_value,_i){
var field_poid = "field10815_" + _i;
var field_itemid = "field10813_" + _i;
if (_value == "1") {
//清空poid的值,并设置属性为必填
WfForm.changeSingleField(field_poid , {value:""}, {viewAttr:"3"});
//设置itemid属性为只读
WfForm.changeFieldAttr(field_itemid, 1);
}
else {
//设置poid属性为编辑
WfForm.changeFieldAttr(field_poid, 2);
//清空itemid的值,并设置属性为编辑
WfForm.changeSingleField(field_itemid, {value:""}, {viewAttr:"2"});
}
}
});
</script>
- 如何实现明细行的列隐藏?
官方API只有控制明细数据行的显示及隐藏,没有给出如何隐藏列。本人实测,可通过以下步骤来实现此功能。
step 1,进入流程表单的模版编辑界面,并进入明细行选择需要隐藏的列
step 2,右键D列,选择列自定义属性,输入自定义的属性值;
注意:设置自定义属性后,D会变为红色,明显的区别于其它列
step 3,在明细行属性变更的方法selectChange中添加如下代码
//明细行属性变更
function selectChange(_value,_i){
//......
if (_value == "1") {
//隐藏poid列
$(".etc_po").each(function () {
$(this).hide();
});
}
else {
//显示poid列
$(".etc_po").each(function () {
$(this).show();
});
}
}
//......
}
大功告成