我目前正在研究动态数据表。假设这个表有4列(名称,x,y,z)。 x,y必须是数字文本字段,z是显示x和y之和的标签。当x或y上的值改变时,z上的值必须重新计算。
我现在的问题是我无法将文本字段绑定到数据表实体,如果我使用来自primefaces的编辑,我需要添加一个我不喜欢的编辑事件。它最初将单元格显示为标签,然后需要单击它以显示文本字段。
有什么建议吗?感谢。
答案 0 :(得分:0)
这是我的解决方案,而不是使用primefaces datatable.edit功能。我只是在单元格中使用了一个文本字段,并添加了一个p:ajax,它会在更改时触发重新计算方法。注意使用update参数,我们可以直接引用行上的一个字段。
<h:form id="creditNoteLinesForm">
<p:dataTable id="resultsId_creditNoteLines" var="entity"
value="#{creditNoteBean.entity.creditNoteLines}">
<!-- // -->
<p:column
headerText="#{messages['creditNote.list.amountWithoutTax']}">
<p:inputText value="#{entity.amountWithoutTax}">
<p:ajax event="change"
listener="#{creditNoteBean.reCompute(entity)}"
update="amountWithTax"></p:ajax>
</p:inputText>
</p:column>
<p:column headerText="#{messages['creditNote.list.amountTax']}">
<p:inputText value="#{entity.taxAmount}">
<p:ajax event="change"
listener="#{creditNoteBean.reCompute(entity)}"
update="amountWithTax"></p:ajax>
</p:inputText>
</p:column>
<p:column
headerText="#{messages['creditNote.list.amountWithTax']}">
<h:outputText id="amountWithTax" value="#{entity.amountWithTax}" />
</p:column>
</p:dataTable>
</h:form>
sdfdsf
public void reCompute(CreditNoteLine line) {
line.computeWithTax();
}