【问题标题】:SummaryRow in p:dataTable not workingp:dataTable 中的 SummaryRow 不起作用
【发布时间】: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>

有人知道为什么会这样吗?

【问题讨论】:

  • 你到底有什么问题?

标签: jsf jsf-2 primefaces 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}" 放在&lt;p:datatable&gt; 标签上。

    【讨论】:

    • 如果您想使用 summaryRow,您至少需要对一列进行排序,它在展示柜和文档中。
    • 我已经有一些带有 sortBy 的列,正如您现在在代码中看到的那样(我已经更新了它)。
    • 如果没有在&lt;p:datatable&gt;标签上添加属性sortBy,则需要手动对列进行排序,带有标题按钮。
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 2013-08-09
    • 2013-11-20
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多