【发布时间】:2011-07-27 11:54:12
【问题描述】:
在我的 p:datatable 中有一个名为 Resolution 的列,由一个复选框和文本组成。如果选中该框,则文本已解析,如果未选中该框,则文本未解析。我还为此列定义了一个过滤器框,因此只显示已解决或未解决的条目。 如果我在 Resolved 上进行过滤,然后取消选中该框,该条目现在是 Unresolved,但它仍然显示。它不应该,因为它不再满足过滤器。我的问题是如何强制 filter() 在最后一次 f:ajax 渲染之后执行?
这是我的代码片段:
<p:dataTable id="measurementHistoryTableId"
value="#{measurements.measurementHistoryList}"
var="meas3"
dynamic="true">
<p:column id="resolutionColumn"
filterBy="#{meas3.resolution}"
filterOptions="#{measurements.measurementHistoryOptions}"
sortBy="#{meas3.resolution}" >
<f:facet name="header">
<h:outputText value="#{msgs.MeasurementResolution}" />
</f:facet>
<h:selectBooleanCheckbox value="#{meas3.resolved}" >
<f:ajax event="click" execute="@all" render="resolutionId @this" />
</h:selectBooleanCheckbox>
<h:outputText id="resolutionId" value="#{meas3.resolution}" />
</p:column>
</p:dataTable>
我尝试了 render=@all,但这没有帮助。 render=@form 给了我未定义的 jQuery.datepicker。我尝试将 'onclick=widget_measurementHistoryTableId.filter()' 添加到 'h:selectBooleanCheckbox' ,但它会导致过滤器在 'f:ajax' 执行之前触发。
感谢您能给我的任何帮助。 宾州
【问题讨论】:
标签: ajax jsf-2 primefaces