如何在APEX 4.2中以表格形式汇总每一行的字段,以便在我提交页面之前获取该行的总数以进行页面验证?
例如,如果第一行在字段6
中有a
而在字段6
中有b
,则第一行的总数应为12
并且在如果字段b
为5
而字段c
为5
,则第二行的第二行应为10
。
所以我想根据行而非列来获取总计。这可能吗?
答案 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();
}