Как вызвать фильтр после f: ajax - PullRequest
1 голос
/ 27 июля 2011

В моем p: datatable есть столбец с именем Resolution, состоящий из флажка и текста. Если флажок установлен, текст «Разрешен». Если флажок не установлен, текст «Разрешен». У меня также есть поле фильтра, определенное для этого столбца, поэтому отображаются только разрешенные или неразрешенные записи. Если я выберу «Разрешено», то сниму флажок, запись теперь не разрешена, но она все еще отображается. Так не должно быть, потому что он больше не удовлетворяет фильтру. Мой вопрос: как заставить 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'.

Спасибо за любую помощь, которую вы мне могли бы оказать. Бинь

1 Ответ

2 голосов
/ 27 июля 2011

Я не знаю, как работает фильтрация простых лиц, но если onclick=widget_measurementHistoryTableId.filter() работает и вы хотите, чтобы он запускался после события ajax, вы можете сделать это следующим образом:

<f:ajax event="click" execute="@all" render="resolutionId @this" 
    onevent="reapplyFilter"/>

Изатем определите функцию reapplyFilter js:

function reapplyFilter(e) {
        if (e.status == 'success') {
            widget_measurementHistoryTableId.filter();
        }
    }
...