作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我拥有的表格的视觉效果:
+---------+------------+-------------------+| Header1 | Header2 | Header3 |+---------+------------+-------------------+| Row A | Input A | Calc'ed output A || Row B | Input B | Calc'ed output B || etc.. | etc.. | etc.. |+---------+------------+-------------------+| Total: Total calc'ed output |+------------------------------------------+
And the stripped-down code:
<p:dataTable id="myTable" value="#{myBean.someList}"
var="currentItem">
<p:column headerText="Header1">
<h:outputText value="#{currentItem.name}" />
</p:column>
<p:column headerText="Header2">
<pe:inputNumber value="#{currentItem.inputVal}">
<p:ajax event="change" listener="#{myBean.changeListener}"
update="outputVal outputTotal" />
</pe:inputNumber>
</p:column>
<p:column headerText="Header3">
<h:outputText id="outputVal" value="#{currentItem.outputVal}" />
</p:column>
<f:facet name="footer">
Total:
<h:outputText id="outputTotal" value="#{myBean.total}" />
</f:facet>
</p:dataTable>
myBean.someList
是
ArrayList<SomeOtherBean>
一个字符串和两个整数,只有 getter 和 setter。
myBean.changeListener
从给定行的第一个整数计算第二个整数,以及所有行的总数。
mainForm:myTable:0:outputTotal
)。
最佳答案
您无法真正从表中更新表的值。但是,您可以使用 p:remoteCommand
为达到这个。另外,我可能会在整个表格上使用 cellEdit 事件(而不是您的 p:ajax
上的单个 pe:inputNumber
)。总体结果将是:
<p:remoteCommand name="refreshFooter" update=":formName:outputTotal"/>
...
<p:dataTable id="myTable" value="#{myBean.someList}" var="currentItem">
<p:column headerText="Header1">
<h:outputText value="#{currentItem.name}" />
</p:column>
<p:column headerText="Header2">
<pe:inputNumber value="#{currentItem.inputVal}">
<p:ajax event="change" listener="#{myBean.changeListener}" process="@this"
oncomplete="refreshFooter();" update="outputVal"/>
</pe:inputNumber>
</p:column>
<p:column headerText="Header3">
<h:outputText id="outputVal" value="#{currentItem.outputVal}" />
</p:column>
<f:facet name="footer">
Total:
<h:outputText id="outputTotal" value="#{myBean.total}" />
</f:facet>
</p:dataTable>
partialSubmit="true"
到
p:ajax
,这样您只需提交组件的数据。如果你喜欢 cellEdit 事件的想法,你需要使 dataTable 可编辑,并在你的
p:dataTable
中添加以下内容,并去掉
p:ajax
在您的
pe:inputNumber
内
<p:ajax event="cellEdit" partialSubmit="true" listener="#{myBean.onCellEdit}"
process="@this" oncomplete="refreshFooter();"/>
关于ajax - 如何ajax更新PrimeFaces数据表页脚中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452834/
我是一名优秀的程序员,十分优秀!