如图
以男生人数(Boy)为例。 1.在VO中新增一字段Boysum
2.页面
<af:column sortProperty="#{bindings.TableZxrstjVO1.hints.Zrs.name}"
sortable="true"
headerText="#{bindings.TableZxrstjVO1.hints.Zrs.label}"
id="c1">
<af:outputText value="#{row.Zrs}" id="ot5">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.TableZxrstjVO1.hints.Zrs.format}"/>
</af:outputText>
<f:facet name="footer">
<af:panelLabelAndMessage label="总数量" id="plam1">
<af:outputText value="#{bindings.Zrssum.inputValue}" id="ot55"
inlineStyle="color:red" partialTriggers=":::qryId1"></af:outputText>
</af:panelLabelAndMessage>
</f:facet>
</af:column>
3.在TableZxrstjVORowImpl中重写getter方法。即Boysum字段的值为对Boy字段求和
/**
* Gets the attribute value for the calculated attribute Boysum.
* @return the Boysum
*/
public Number getBoysum() {
return getSum("Boy");
}
/**
* 计算某列的和
* @param attribute
* @return
*/
public Number getSum(String attribute) {
Number total = new Number(0);
try {
RowSetIterator rsi =
((TableZxrstjVOImpl)getViewObject()).createRowSetIterator(null);
while (rsi.hasNext()) {
Row row = rsi.next();
Number num = new Number(row.getAttribute(attribute));
if (num != null) {
total = total.add(num);
}
}
rsi.closeRowSetIterator();
} catch (Exception e) {
e.printStackTrace();
}
return total;
}