点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
亲爱的朋友,
我有一个要求,我需要使表行(单元格)中的子窗体动态可见/不可见。
我的代码:
data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA [0]。#subform [1]。#subform [2] :: initialize-(JavaScript,客户端)
var length = xfa.resolveNodes(" data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA")。length;
//var字段= xfa.form .subform.table.row.all;
xfa.host.messageBox(" Hi");
用于(var i = 0; i <= length; i ++)
{
xfa.host .messageBox(" Hi");
if(xfa.resolveNode(" data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA [" + i +"]。# subform [1]。#subform [2] .TextField1")。rawValue ==" X"){
this.presence =" hidden";
} else {
this.presence =" visible" ;
}
}
问题1.如果子窗体在第一行被隐藏,则它在表的所有行中都被隐藏,有条件的情况下它应该变为可见/不可见。
2. xfa.host.messageBox(" Hi"); 不能正常工作,我也尝试过这些,但以下均不能用于调试目的:
data。#pageSet [0] .Page1.CurrentPage :: initialize-(JavaScript,客户端)
xfa.host.messageBox(" welcome"," Error",3,0);
$ host .messageBox(" Welcome");
xfa.host.messageBox(" Test");
app.alert(" click");
Siva,您好,我想这肯定是一个逻辑错误。
GT_TABLE中的每一行都会触发脚本:data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA [0 ] .FamilySF.SpouseSF :: initialize
,但这仅引用GT_TABLE中的当前行。
想象一下GT_TABLE有3行。 然后,上述编码被调用3次,并且引用为:
1。 这个=> GT_TABLE [0] .FamilySF.SpouseSF
2。 这个=> GT_TABLE [1] .FamilySF.SpouseSF
3。 这个=> GT_TABLE [2] .FamilySF.SpouseSF
由于循环,您将多次覆盖this.presence的值。
那么为什么不将此编码更改为:
因为每行都要进行编码,并且要探测的字段是相对于子表单(SpouseSF)的,所以可以通过相对绑定检查值。
最好的问候
Pascal
非常感谢它的工作...
嗨,Siva,
如果您打算遍历表以隐藏某些字段,请仅将脚本应用于表本身 。
代替:
data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA [0]。#subform [1]。#subform [2] :: initialize
您应该将编码放在这里:
data。#subform [0]。#subform [2]。#subform [3] .GT_TABLE.DATA [0]
否则,整个表将针对每一行循环,这可能会导致 糟糕的性能和意外行为。
您的messageBox很有可能不会触发,因为Adobe对正确的参数非常挑剔。
adobe xfa docs a>
您是否尝试过以下示例:
最诚挚的问候
帕斯卡
尊敬的帕斯卡,
1。 我附上了屏幕截图,以便更好地理解hirarachy和代码。
场景是这样的,表中的列具有多个子表单,因此对于每个记录,如果特定子表单有数据,则该子表单应该是可见的。
否则它应该是不可见的。
注意:我已经重命名了子表单的名称,并进行了必要的代码更改,以便更好地理解。
注意:在我的情况下,一旦数据不存在,子窗体将被隐藏,但是当下一条记录中的数据存在时,子窗体将不可见。
2。 我已经在页面初始化时提供了代码,这里消息弹出也没有触发:
此致
Siva
一周热门 更多>