【泛微表单】明细表隐藏显⽰问题处理关于泛微明细表当前⾏隐藏问题
- ⼀、根据明细表字段隐藏明细当前⾏
1:第⼀次测试半成品:(主要是对明细⾏的字段逐个隐藏,造成结果的不完美)
//页⾯加载后执⾏
jQuery(document).ready(function(){
//获取明细总⾏数
var indexnum=parseInt(jQuery("#indexnum0").val());
// alert(indexnum);
//循环⾏数
for(var i=0;i<indexnum;i++){
var li = i;
var ddlx=jQuery("#field13104_"+li).val();
//alert(ddlx);
if(ddlx=="1"){
//明细表⾃定义名称,以下代表明细⾏的字段
// $("#mingxi1").hide();
// $("#mingxi2").hide();
$("#mingxi3_"+li).hide();
$("#mingxi4_"+li).hide();
$("#mingxi5_"+li).hide();
$("#mingxi6_"+li).hide();
$("#mingxi7_"+li).hide();
$("#mingxi8_"+li).hide();
$("#mingxi9_"+li).hide();
$("#mingxi10_"+li).hide();
$("#mingxi11_"+li).hide();
$("#mingxi12_"+li).hide();
$("#mingxi13_"+li).hide();
}else{
//alert("⼤好⼈吗");
}
}
});
2:正确做法:(思路,⾸先获取明细⾏check,利⽤each遍历,)
jQuery(document).ready(function() {
alert(0);
//check_node_0:这个是明细中check按钮,遍历有多少个
jQuery("input[name='check_node_0']").each(function(i){
var shao=this.value;
//获取明细中的字段
var tezhi=jQuery("#field12606_"+shao).val();
alert(tezhi);
if (tezhi=="0" ){
//获取当前⾏,并根据class隐藏,edesign_hide:e8专属隐藏样式
jQuery(this).parent().parent().attr("class","edesign_hide");
}
});
});
⼆、根据主表字段隐藏明细表字段(E8/E9)
<script>
jQuery(document).ready(function() {
jQuery("#field27781").bindPropertyChange(function() {  //改变值时触发          var zclb= jQuery('#field27781').val();  //类别
jquery的attr属性if(zclb=="0"){
var tbodyTrs_mx1= $("#oTable0> tbody >tr");//获取table
for(var i=0;i<tbodyTrs_mx1.length-4;i++){
jQuery(".b").hide();
jQuery('#field27778_'+i).val("");
}
}else{
var tbodyTrs_mx2= $("#oTable0> tbody >tr");//获取table
for(var i=0;i<tbodyTrs_mx2.length-4;i++){
jQuery(".b").show();
jQuery('#field27778_+i').val("");
}
}
});
});
function _customAddFun0(){  //新增明细按钮触发函数
var zclb= jQuery('#field27788').val();  //类别
if(zclb=="0"){
var tbodyTrs_mx1= $("#oTable0> tbody >tr");//获取table
for(var i=0;i<tbodyTrs_mx1.length-4;i++){
jQuery(".b").hide();
jQuery('#field27778_'+i).val("");
}
}else{
var tbodyTrs_mx2= $("#oTable0> tbody >tr");//获取table
for(var i=0;i<tbodyTrs_mx2.length-4;i++){
jQuery(".b").show();
jQuery('#field27778_+i').val("");
}
}
}
</script>
三、主表控制明细表显⽰属性(必填⾮必填E9)
var indexid ="1";//明细表下标第⼏个明细表
var main_fieldid ="field8914";//主表需要判断的字段
var detail_fieldid ="field8912";//明细表需要修改显⽰属性的字段
function initregit(){
var flag = FieldValue(main_fieldid);
if(flag =="0"){//如果主表判断的字段为"0"时,将明细表的字段变更为必填
var details = DetailAllRowIndexStr("detail_"+indexid);
var detailsarr = details.split(",");
detailsarr.forEach((item,index,arr)=>{
mustedit(item,3);
});
}else{//如果主表判断的字段不为"0"时,将明细表的字段变更为编辑
var details = DetailAllRowIndexStr("detail_"+indexid);
var detailsarr = details.split(",");
detailsarr.forEach((item,index,arr)=>{
mustedit(item,2);
});
}
};
function mustedit(index,showorhide){
WfForm.changeFieldAttr(detail_fieldid+"_"+index, showorhide);//字段修改为只读};
setInterval("initregit()",500);
四、根据明细⾏中的⼈员控制明细表编辑不同的明细⾏(E9)
<script>
jQuery(document).ready(function(){
/
/获取当前打开请求的基础信息
var basicValue = BaseInfo();
//获取当前登录⽤户的ID
var userId=basicValue['f_weaver_belongto_userid'];
}
//绑定处理⼈字段,值变化后执⾏下⾯的代码
WfForm.bindDetailFieldChangeEvent("field8609",
function(id, rowIndex, value){
//获取明细1的所有⾏标识
var detailIndex = DetailAllRowIndexStr("detail_1");
//分割⾏标识为数组
var indexArray = detailIndex.split(',');
//循环判断数组
for(var index in indexArray){
//根据⾏标识每次循环获取处理⼈字段的值
var detailUserId = FieldValue("field8609_"+ indexArray[index]);
//如果值等于当前操作者,就改变处理意见的显⽰属性为必填,反之为只读
if(detailUserId == userId){
WfForm.changeFieldAttr("field8610_"+ indexArray[index],3);
}else{
WfForm.changeFieldAttr("field8610_"+ indexArray[index],1);
}
}
});
});
</script>
友情提⽰,正确做法受到同⾏指引,在此共享,希望受此疑惑的朋友可以借鉴