2013-02-13 11 views
2

Как очистить глобальный фильтр в PrimeFaces DataTable с помощью «Очистить» CommandButton? Я нашел similar question on PrimeFaces forum, но похоже, что не ответил - подсказка, которую вы можете найти, мне не помогла. Я попытался решить проблему следующим образом:Как очистить глобальный фильтр в PrimeFaces DataTable

<p:dataTable id="myTab" widgetVar="myTabWidgetVar" var="obj" 
    value="#{managedBean.objects}"> 
    <f:facet name="header"> 
     <p:outputPanel> 
      <h:outputText value="Search all fields:"/> 
      <p:inputText id="globalFilter" onkeyup="myTabWidgetVar.filter()"/> 
     </p:outputPanel> 
    </f:facet> 
</p:dataTable> 
<p:commandButton value="Clear" onclick="myTabWidgetVar.clearFilters();" 
    update="@form"/> 

Он очищает только фильтры столбцов. Значение в глобальном фильтре остается нечистым. Можете ли вы помочь мне решить проблему?

+0

Поскольку 'globalFilter' будет в конце концов, а' <входного типа = «текст»> ', то просто ясно, что это значение с ванильным JavaScript или с помощью JQuery (тот, который работает лучше для вас). –

ответ

6

Вот как:

$("#someFormId\\:myTab\\:globalFilter").val("").keyup();//if you got `prependId="false" , than omit the `someFormId\\:` part from the selector and leave only `myTab\\:globalFilter` 

Это наполнит ваш фильтр с пустой строкой и вызвать KeyUp событие, в результате чего очистка фильтра и очистка состояния фильтра таблицы

Если вы просто хотите очистить фильтр без сброса фильтра, примененного к столу использовать

$("#someFormId\\:myTab\\:globalFilter").val(""); 

Если вы хотите использовать этот код в CommandButton нет необходимости использовать Ajax (update...)

Просто используйте onclick как этого

<p:commandButton value="Clear" 
onclick="$('#someFormId\\:myTab\\:globalFilter').val('').keyup(); return false;"/> 

использование return false; поэтому кнопка не будет представлять свою страницу ...

+0

Спасибо, ваш ответ был очень полезным :), он работает. – Serg

+0

Добро пожаловать. – Daniel

+0

Он перестает работать, когда я помещаю «myTab» с закрытием «someFormId» внутри составного компонента. Можете ли вы помочь мне еще раз? – Serg

1

Primefaces DataTable имеет опцию "filteredValue". Предположим, вы установили такие значения фильтрации; filteredValue = "# managedBean.filteredObjects}".

filtersObjects имеет тот же тип, что и значение datatable, которое является «managedBean.objects» в вашем случае. Перед загрузкой datatable установите для параметра filterObjects значение NULL. Это решит вашу проблему.

0
<pdataTable widgetVar="departments" /> 
<p:commandButton value="#{lang:text('Add department')}" 
       id="....." 
       actionListener="....." 
       update="@form" 
       oncomplete="PF('departments').clearFilters()" 
       styleClass="........."/> 

Он работает в моем случае для штриха лицо

+0

он хочет «глобальную» не «конкретную» таблицу –

Смежные вопросы