使用Primefaces DataTable - Edit中的示例我已将“年”列更改为显示“价格”。在sortBy="#{car.brand}"
和<p:dataTable>
中添加了<p:summaryRow>
过滤条件,以显示每个汽车品牌的计算小计(根据Primefaces DataTable - Summary Row)。然后是一个显示计算总计的页脚。
<f:facet name="footer">
<h:outputText id="carstotal" value="Total: $#{dtEditView.totalSales}" />
</f:facet>
为了计算我在 EditView.java 中创建此方法的总数:
public Integer getTotalSales() {
Integer total = 0;
for (Car car : cars2) {
total += car.getPrice();
}
return total;
}
但是我坚持如何用另一种方法计算相同品牌的小计。如果数据表价格单元是可编辑的,有没有办法做到这一点?提前谢谢。
答案 0 :(得分:0)
我设法解决了获取相同品牌小计的方法。但是当我更改单元格中的价格值时,它只更新总数。我在 EditView.java :
中添加了以下代码<ul>
<li>Option1
<ul>
<li>OptionA</li>
<li>OptionB</li>
</ul>
</li>
<li>Option2</li>
</ul>
在 cars.xhtml
中public void init() {
...
cars2.stream().filter(car -> !brands.contains(car.getBrand())).forEach(car -> brands.add(car.getBrand()));
Collections.sort(brands);
...
}
public Integer getSubTotalSales() {
Integer total = 0;
for (Car car : cars2) {
if (Objects.equals(car.getBrand(), brands.get(callCounter))) {
total += car.getPrice();
}
}
callCounter++;
return total;
}
public Integer getTotalSales() {
Integer total = 0;
for (Car car : cars2) {
total += car.getPrice();
}
return total;
}