Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces数据表动态计算_Primefaces_Datatable_Filtering - Fatal编程技术网

Primefaces数据表动态计算

Primefaces数据表动态计算,primefaces,datatable,filtering,Primefaces,Datatable,Filtering,在我的视图层中,我使用一个有9列的Primefaces数据表,最后一列有浮点值(列名='Valor') 有一个名为“prefDep”的整数列,它的值(顺便说一下,foreignKey值)有一个筛选器: 我想要的是:在筛选数据表时,我只想显示筛选后的部分值对应的GrandTotal,而不是“固定”的总和 我怎么做 提前谢谢 -- 第节之后: 在我的AbstractController中,我有: private List<T> filteredUpb; //... public List

在我的视图层中,我使用一个有9列的Primefaces数据表,最后一列有浮点值(列名='Valor')

有一个名为“prefDep”的整数列,它的值(顺便说一下,foreignKey值)有一个筛选器:

我想要的是:在筛选数据表时,我只想显示筛选后的部分值对应的GrandTotal,而不是“固定”的总和

我怎么做

提前谢谢

--

第节之后:

在我的AbstractController中,我有:

private List<T> filteredUpb;
//...
public List<T> getFilteredUpb() {
    if (filteredUpb == null) {
        filteredUpb = this.ejbFacade.findAll();
    }
    return filteredUpb;
}
私有列表过滤器重复b;
//...
公共列表getFilteredUpb(){
if(filteredUpb==null){
filteredUpb=this.ejbFacade.findAll();
}
返回过滤器重复b;
}
在我的控制器(managedBean)中:

private List filteredUpb=null;
//...
public int getPerdasTotal(){
int-total=0;
对于(Upb id:getFilteredUpb()){
total+=id.getVlOco();
}
返回总数;
}
在jsf中:

<p:column>
  <f:facet name="footer">
    <h:outputText value="#{upbController.perdasTotal}" />
  </f:facet>
</p:column>

为了不让这个问题得不到回答,我的另一篇文章中可以找到这个问题的解决方案(见下文):

我认为可以在PF数据表过滤和/或分页上定义AJAX调用

<p:dataTable value="#{myBackingBean.values}" var="row" filteredValue="#{myBackingBean.filteredValues}" >
<p:ajax event="filter" listener="#{myBackingBean.updateSum}" update="componentToUpdate" />
//...
</p:dataTable>

//...
在updateSum()方法中,您可以遍历filteredValues集合来完成业务


针对datatable中包含的更新组件,您可能会遇到一些困难,但这可以通过向代码中添加类似于
styleClass=“footerToUpdate”
的内容,并在更新中使用它与
update=“@(.footerToUpdate)”

来解决,解决方案(请参见下文)对于这个问题,可以在我的另一个帖子中找到:

我认为可以在PF数据表过滤和/或分页上定义AJAX调用

<p:dataTable value="#{myBackingBean.values}" var="row" filteredValue="#{myBackingBean.filteredValues}" >
<p:ajax event="filter" listener="#{myBackingBean.updateSum}" update="componentToUpdate" />
//...
</p:dataTable>

//...
在updateSum()方法中,您可以遍历filteredValues集合来完成业务

您可能很难确定datatable中包含的更新组件的目标,但这可以通过向代码中添加类似于
styleClass=“footerToUpdate”
的内容并在更新中使用它来解决,并使用
update=“@(.footerToUpdate)”

,我们的所有讨论和您的解决方案都发布在这里的什么地方?我正在研究你的解决方案,但现在它消失了。你删除了所有东西吗?我想知道为什么,如果是的话。。。因此,我现在有了一个风滚草徽章,我们所有的讨论和你的解决方案都张贴在哪里了?我正在研究你的解决方案,但现在它消失了。你删除了所有东西吗?我想知道为什么,如果是的话。。。因此,我现在有了风滚草徽章
private List<Upb> filteredUpb = null;
//...
public int getPerdasTotal() {
    int total = 0;
    for (Upb id : getFilteredUpb()) {
        total += id.getVlOco();
    }
    return total;
}
<p:column>
  <f:facet name="footer">
    <h:outputText value="#{upbController.perdasTotal}" />
  </f:facet>
</p:column>
<p:dataTable value="#{myBackingBean.values}" var="row" filteredValue="#{myBackingBean.filteredValues}" >
<p:ajax event="filter" listener="#{myBackingBean.updateSum}" update="componentToUpdate" />
//...
</p:dataTable>