更新PrimeFaces数据表中的列值

时间:2015-04-14 16:45:56

标签: jsf jsf-2 primefaces datatable myfaces

我有一个数据表,其中包含要引用的项目,因此有数量,单价等列,我想在输入单价时显示该项目的总价格。我的代码如下所示:

<p:column styleClass="tdasheader" style="text-align:center" width="80" headerText="Unit Price">
    <pe:inputNumber id="unitPrice" value="#{quotedItem.quotedPrice}"
        minValue="0.01" maxValue="999999999.99" decimalPlaces="2"
        style="text-align: right;" size="10">

        <p:ajax event="change"
            listener="#{supplierQuotationBean.onAmountChange}"
            process="@this" update="totalPrice" />

        <f:attribute name="quotedItem" value="#{quotedItem}" />
    </pe:inputNumber>
</p:column>
<p:column styleClass="tdasheader" style="text-align:center" width="60" headerText="Disc" footerText="Total (inc Dly)">
    <pe:inputNumber id="discount" value="#{quotedItem.quotedDiscount}"
                            minValue="1" maxValue="100" />
</p:column>
<p:column styleClass="tdasheader" width="80" id="totalPriceCol">
    <f:facet name="header" style="text-align:center">
        <h:outputText value="Total" />
    </f:facet>
    <p:outputPanel id="totalPrice" style="text-align:right; padding-right:10px">
        <h:outputText value="#{quotedItem.totalPrice}">
            <f:convertNumber pattern="#,##0.00"/>
        </h:outputText>
    </p:outputPanel>
    <f:facet name="footer">
        <p:outputPanel style="text-align:right; padding-right:10px">
            <h:outputText value="x#{supplierQuotationBean.quotationTotalAsString}x" />
        </p:outputPanel>
    </f:facet>
</p:column>

正如您可能已经猜到的那样,我发布了求助信息,但是ajax更新并不起作用 - 实际上它只适用于第一行。我已尝试将更新参数中的值更改为&#34;#{p:component(&#39; totalPrice&#39;)}&#34;它做同样的事情。我甚至尝试使用监听器进行如下更新:

String clientId = event.getComponent().getClientId();
String totalPriceClientId = clientId.substring(0, clientId.lastIndexOf(":"))+":totalPrice";
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update(totalPriceClientId);

......但这也不起作用。更重要的是,我猜,即使我更新了整个数据表,我仍然得到相同的结果,但另外会失去单位价格字段中的值(即使进程=&#34; @ this&#34;)!

任何人都可以建议我如何能够克服这个问题吗?

我使用的是PrimeFaces 5.1.15和MyFaces 2.2.6。

非常感谢, 尼尔

0 个答案:

没有答案