p:dataTable 中的 SummaryRow 不起作用
Posted
技术标签:
【中文标题】p:dataTable 中的 SummaryRow 不起作用【英文标题】:SummaryRow in p:dataTable not working 【发布时间】:2016-10-06 11:05:09 【问题描述】:我试图在我的 dataTable 上显示总值,我的代码类似于 primefaces 展示 DataTable - SummaryRow 并且仍然无法正常工作。
<p:dataTable id="dtCaixa" var="list" value="#caixaMB.list" paginator="true" rows="7"
paginatorPosition="bottom" rowsPerPageTemplate="10,15,20" liveScroll="true"
paginatorAlwaysVisible="false" emptyMessage="Nenhuma entrada!" liveResize="true">
<p:column headerText="Nome" sortBy="#list.produtoFK.nome" style="width:15%;">
<h:outputText value="#list.produtoFK.nome" />
</p:column>
<p:column headerText="Funcionário" sortBy="#list.funcionarioFK.nome">
<h:outputText value="#list.funcionarioFK.nome" />
</p:column>
<p:column headerText="Quantidade" sortBy="#list.quantidade">
<h:outputText value="#list.quantidade" />
</p:column>
<p:column headerText="Preço" >
<h:outputText value="#list.produtoFK.preco" rendered="#not empty list.produtoFK">
<f:convertNumber pattern="R$ #0.00" locale="pt_BR"/>
</h:outputText>
</p:column>
<p:column headerText="Total" sortBy="#list.total" >
<h:outputText value="#list.total" >
<f:convertNumber pattern="R$ #0.00" locale="pt_BR"/>
</h:outputText>
</p:column>
<p:column headerText="Remover" class="centered">
<p:commandButton icon="ui-icon-trash" title="excluir" onclick="PF('confirmaExclusao').show();">
<f:setPropertyActionListener target="#caixaMB.itemSelecionado" value="#list" />
</p:commandButton>
</p:column>
<p:summaryRow>
<p:column colspan="3" style="text-align:right">
<h:outputText value="Total:" />
</p:column>
<p:column>
<h:outputText value="#caixaMB.total">
</h:outputText>
</p:column>
</p:summaryRow>
</p:dataTable>
有人知道为什么会这样吗?
【问题讨论】:
你到底有什么问题? 【参考方案1】:我认为您想要实现的是显示在底部的列的总和。我也被 summaryRow 函数所吸引,直到我意识到它是一个分组函数而不是总计摘要。 我 解决这个问题的原因是我在最后一列中添加了一些 footerText。您必须手动计算总数(迭代数据集等),然后您可以使用类似的东西:
<p:column style="text-align: right" footerText="$ #invoicesbean.total">
<f:facet name="header">
<h:outputText value="Amount" />
</f:facet>
........ etc
这对我来说效果很好,但是 YMMV!
【讨论】:
【参考方案2】:如果要使用 summaryRow,则需要使用至少一列对数据表进行排序。查看 Primefaces 文档。
例如将属性sortBy="#myList.myOrderValue"
放在<p:datatable>
标签上。
【讨论】:
如果您想使用 summaryRow,您至少需要对一列进行排序,它在展示柜和文档中。 我已经有一些带有 sortBy 的列,正如您现在在代码中看到的那样(我已经更新了它)。 如果没有在<p:datatable>
标签上添加属性sortBy,则需要手动对列进行排序,带有标题按钮。以上是关于p:dataTable 中的 SummaryRow 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
根据 p:dataTable 的每一行中的另一个 p:selectOneMenu 填充 p:selectOneMenu
JSF p:dataTable 的奇怪行为(p:columns 中的第一个条目错误)
Primefaces:从p:dataTable中的行选择中排除列
搜索后,p:dataTable 不会更新,除非调用了两次搜索或输入并清除了过滤器中的某些内容
<p:dataTable> 中的 sortMode="multiple" 和 lazy="true" 在分页期间清除多排序元数据