我有一个基于SQL查询创建经典报告的应用程序
Select summary_id,
APEX_ITEM.HIDDEN(1,summary_id)||
APEX_ITEM.TEXT(2,attribute5) attribute5
from summary;
这里summary_id和属性5是数字数据类型。
我有七个(7行)记录,其中列中的第5和第7行分别是小计和总计。
我想根据上一行中值的变化动态计算sub_total和total。
第5行是第1、2、3、4行的总和,第7行是第1、2、3、4、6行的总和
请让我知道是否需要提供任何其他信息来理解问题。
谢谢你。
Oracle apex 4.2版本。
我假设您知道如何使用Inspect element
浏览器的功能来获取attribute5列下的文本框的name属性。类似于“ f01”,“ f02”或更高的名称,只需将其签出即可。另一个假设(基于给定的数据)是,第5行包含第1至4行的总数,第7行包含第5和6行的总数。
获得名称后,将此函数粘贴到页面的“函数和全局变量声明”属性中:
function setTotals(itemname){
var v_subtotal=0;
var v_total=0;
for(i=0;i<4;i++){
v_subtotal = Number(v_subtotal) + Number(document.getElementsByName(itemname)[i].value);
}
v_total = Number(v_subtotal) + Number(document.getElementsByName(itemname)[5].value);
document.getElementsByName(itemname)[4].value = v_subtotal;
document.getElementsByName(itemname)[6].value = v_total;
}
function setOnChangeEvent(itemname){
for(i=0;i<4;i++){
document.getElementsByName(itemname)[i].setAttribute("onchange","setTotals(\"" + itemname + "\")");
}
$("[name=" + itemname + "]").eq(5).change(function(){
$("[name=" + itemname + "]").eq(6).val(Number($("[name=" + itemname + "]").eq(4).val()) + Number($("[name=" + itemname + "]").eq(5).val()));
});
$("[name=" + itemname + "]").eq(4).attr("disabled","disabled");
$("[name=" + itemname + "]").eq(6).attr("disabled","disabled");
}
然后,在页面的“页面加载时执行”属性中,输入以下代码行:
setTotals(itemname );
setOnChangeEvent(itemname );
一个例子是
setTotals("f02");
setOnChangeEvent("f02");
这是代码的简要说明:
函数“ setTotals”执行以下操作:
它使用您在参数“ f02”中提供的名称设置第一个文本框和第四个文本框之和的小计框的值。它还从第6个文本框的总和和为小计文本框计算的值设置“总计”框的值。
函数“ setOnChangeEvent”执行以下操作:
它将框1到框4的onchange事件设置为setTotals(“ f02”),因此,如果您要检查上述框之一,现在看起来像这样:
<input onchange="setTotals('f02')" name="f02" size="20" maxlength="2000" value="5" type="text">
它还设置了第6个框的change事件。(我认为,仅在代码上,它的change事件发生的事情是不言而喻的)此函数的最后一部分禁用了第4个和第7个文本框。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句