2016-04-27 26 views
0

如何在APEX 4.2中以表格形式对每行上的字段进行求和以获得该行的总数,然后才能提交页面以进行页面验证?在apex 4.2中以表格形式总结行以进行验证

例如,如果在第一行具有场b在字段a66总用于第一行应是12和在第二行,如果字段b5和场c5总用于第二行应该是10

所以我想得到总计基于行而不是列。那可能吗?

+0

我建议你做一个功能,增加了列a和b,然后点击“)功能(”列b组自定义属性的onchange = – brenners1302

回答

0

是的,它的可能性。如果你知道javascript/jquery,你会很好的与我的解决方案。这是你必须做的:

得到你想要总结的字段的name属性(使用浏览器的inspect元素)。 oracle顶点中的字段名称通常是'f01'或'f02'等等。在“函数和全局变量声明”网页的一部分

function sumUpRows(columnforsum,itemstobeadded){ 
     var numofcols = arguments.length; 
     var numofrows = $("[name=" + arguments[0] + "]").length; 
     var summ = 0; 
     for(x=0;x<numofrows;x++){ 
      for(i=1;i<numofcols;i++){ 
      summ = summ + Number($("[name=" + arguments[i] + "]").eq(x).val()); 
      } 
      $("[name=" + columnforsum + "]").eq(x).val(summ); 
     } 
    } 

凌驾于功能:一旦你的领域,创建一个JavaScript函数,或者如果你喜欢,你可以使用这一个。然后创建一个“提交页面前”动态操作。设置它的行动,“执行JavaScript的”然后把下面这行代码:

sumUpRows("nameoffieldwheresumwillbeassigned","nameofitem1","nameofitem2","nameofitem3"); 

这里有一个例子:

sumUpRows("f04","f01","f02","f03"); 

对于你的问题在注释部分,答案是肯定的。要自动获得一个行的总和为您填写的箱子在该行上,您可以使用此功能:

function sumUpRowsAsYouGo(whatelement){ 
    var numofrows=$("[name=f01]").length; 
    var summ = 0; 
    for(i=0;i<numofrows;i++){ 
     if($(whatelement).attr("id") == $("[name=" + $(whatelement).attr("name") + "]").eq(i).attr("id")){ 
      for(a=1;a<(arguments.length-1);a++){ 
       summ += Number($("[name="+ arguments[a] + "]").eq(i).val()); 
      } 
      $("[name="+ arguments[arguments.length-1] + "]").eq(i).val(summ); 
      break; 
     } 
    } 
} 

你可以使用这个功能就像这样(把这些线路中的“在页面加载执行”和你的表格形式的区域的动态行为)“刷新后”:

$("[name=f01]").change(function(){ 
      sumUpRowsAsYouGo(this,"f01","f02","f03","f04");   
} 
); 

$("[name=f02]").change(function(){ 
      sumUpRowsAsYouGo(this,"f01","f02","f03","f04");   
} 
); 

$("[name=f03]").change(function(){ 
      sumUpRowsAsYouGo(this,"f01","f02","f03","f04");   
} 
); 
+0

是有一种方法可以在用户向该字段中输入数字并选项卡后计算总数,并且总数字段会自动更新,而不是等待点击提交按钮以获取总数? –

+0

@达雷尔劳伦斯,检查我的答案。我已经更新了它。 – Vance

+0

@DarrellLawrence,你错过了另外一个论点。将函数调用的最后一个参数作为列的名称,如果名称为“f11”,则每列的回调函数必须包含:'sumUpRowsAsYouGo(this,“f04”,“f05” ,“f06”,“f07”,“f08”,“f11”);' – Vance