在apex 4.2中的表格形式上对行进行求和以进行验证

时间:2016-04-27 13:25:04

标签: oracle-apex

如何在APEX 4.2中以表格形式汇总每一行的字段,以便在我提交页面之前获取该行的总数以进行页面验证?

例如,如果第一行在字段6中有a而在字段6中有b,则第一行的总数应为12并且在如果字段b5而字段c5,则第二行的第二行应为10

所以我想根据行而非列来获取总计。这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,它可能。如果你知道javascript / jquery,你将与我的解决方案相处得很好。这就是你要做的事情:

获取要总结的字段的name属性(使用浏览器的inspect元素)。 oracle apex中字段的名称通常类似于'f01'或'f02'等等。获得字段后,创建一个javascript函数,或者如果您愿意,可以使用此函数:

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

将上面的函数放在页面的“函数和全局变量声明”部分中。然后创建“在页面前提交”动态操作。将其操作设置为“执行javascript”,然后输入以下代码:

   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");         
}   
);

您可以像这样使用此功能(将这些行放在表格形式区域的“在页面上执行加载”和“刷新后”动态操作中):

    String authServer = UriUtils.getOrigin(httpRequest.getRequestURL().toString()) + AUTH_CONTEXT_PATH;
    String token = httpRequest.getHeader("Authorization").replaceAll("Bearer ", "");
    String realmClientsUrl = authServer+"/admin/realms/testrealm/clients/"+getClientRepresentationId(authServer,realm,token);
    ClientRequest request = getClientRequest(realmClientsUrl,token);
    ClientResponse<String> response;
    ClientRepresentation clientRepresentation = null;
    try{
        response = request.get(String.class);
        validateResponse(response,"CLIENT_REPRESENTATION");
        clientRepresentation = response.getEntity(ClientRepresentation.class);
        return clientRepresentation;
    } catch (Exception e) {

        e.printStackTrace();
    }