为什么我的dataTable显示的summaryRow没有?

时间:2017-08-26 03:01:59

标签: jsf java-ee primefaces

我的JSF页面上有 dataTable

<p:dataTable id="dataCabecera" value="#{cargaHorariaController.listaActivDoc}" var="listaActDoc"
             rowKey="#{listaActDoc.pzptcabperjactPK.pzptcabperjactActividad}" selectionMode="single"
             selection="#{cargaHorariaController.listaActivSelected}">
    <p:column headerText="Actividad" style="width: 35%">
        <p:outputLabel value="#{listaActDoc.pzptcabperjactPK.pzptcabperjactActividad} - #{cargaHorariaController.descActiv(listaActDoc.pzptcabperjactPK.pzptcabperjactActividad)}"/>
    </p:column>

    <p:column headerText="Horas" style="width: 15%">
        <p:outputLabel value="#{listaActDoc.pzptcabperjactHoras}" />
    </p:column>

    <p:column headerText="" style="width: 20%">
        <p:commandLink id="cmdSubacti" process="dataCabecera"
                       style="margin:0px" title="subactividad" value="Ver Subactividad"
                       action="#{cargaHorariaController.consultarSubactividadesDoc()}" update=":formPrincipal:formPrincipal1:pnlDet">
            <f:setPropertyActionListener value="#{listaActDoc}" target="#{cargaHorariaController.activSelected}"/>
        </p:commandLink>
    </p:column>

    <p:column headerText="" style="width: 30%">
        <p:commandButton value="Actualizar" type="button" id="actiActu" action="#{cargaHorariaController.actualizar()}" onclick="PF('wdlgActualizar').show()" />
        <p:spacer width="15px" height="0px"> </p:spacer>
        <p:commandButton value="Eliminar" id="actiEli" ajax="false">
            <p:confirm header="Eliminar actividad" message="Está seguro que desea eliminar esta actividad?" icon="ui-icon-alert" />
        </p:commandButton>
        <p:confirmDialog global="true" showEffect="fade" hideEffect="fade" style="font-size: 11px; text-height: font-size; text-align: left; font-weight: bold">
            <div align="center">
                <p:commandButton value="Sí" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                <p:commandButton value="Cancelar" type="button" styleClass="ui-confirmdialog-no CyanButton" icon="ui-icon-close" />
            </div>
        </p:confirmDialog>
    </p:column>
    <p:summaryRow>
        <p:column colspan="1" style="text-align: right">
            <p:outputLabel value="Total:" />
        </p:column>
        <p:column colspan="2" style="text-align: left">
            <p:outputLabel value="#{cargaHorariaController.horasAct}" />
        </p:column>
    </p:summaryRow>
</p:dataTable>

我想要列的总和&#34; Horas &#34;在表格的底部,但 summaryRow 不会出现:

table

我的按钮中的图标也存在同样的问题(jQueryUI图标和Font Awesome图标)。 我该如何解决?

编辑:我使用了h:outputText并且我更改了colspan属性,所以现在它们加起来为4,但结果相同:没有p:summaryRow。我调用了horasAct,因为该变量具有总和的结果。

1 个答案:

答案 0 :(得分:0)

首先,对于显示信息,最好使用h:outputText组件。因为p:outputLabel组件需要将标签与输入字段绑定。

它具有一些优势,例如:

  • 如果您为此字段标记了所需的标签,则会显示“*”符号
  • 标签上的值将用于面孔消息

关于你的p:summaryRow。在p:dataTable中,您有四列但在p:summaryRow colSpan属性中的列中总共不会给出4(仅3)。

你也说过想要从“Horas”栏中加总值。但是打电话

#{cargaHorariaController.horasAct}代替#{listaActDoc.pzptcabperjactHoras}

<强>更新

您需要添加sortBy属性,然后才会显示summaryRow。但是此组件计算相同行的列值的总和。您可以查看更多示例here,只是尝试按不同列对表进行排序。

我认为您应该使用columnGroup组件并为您的表添加页脚。此组件只在表格的底部添加一行,您可以输出horas列的总和。