如何使用“Clear”CommandButton清除PrimeFaces DataTable中的全局过滤器?我找到了similar question on PrimeFaces forum,但看起来没有回答 - 提示可以发现那里没有帮助我。我试着按如下方式解决问题:
<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 :(得分:6)
以下是:
$("#someFormId\\:myTab\\:globalFilter").val("").keyup();//if you got `prependId="false" , than omit the `someFormId\\:` part from the selector and leave only `myTab\\:globalFilter`
这将使用空字符串填充过滤器并触发键盘事件,从而清除过滤器并清除表格的过滤器状态
如果您只想清除过滤器而不重置应用于您的桌子的过滤器,请使用
$("#someFormId\\:myTab\\:globalFilter").val("");
如果要在commandButton中使用此代码,则无需使用ajax(update...
)
只需像这样使用onclick
<p:commandButton value="Clear"
onclick="$('#someFormId\\:myTab\\:globalFilter').val('').keyup(); return false;"/>
使用return false;
,因此该按钮不会提交您的页面...
答案 1 :(得分:1)
Primefaces数据表具有“filteredValue”选项。我们假设您设置过滤值,如; filteredValue = “#managedBean.filteredObjects}”。
filteredObjects与datatable的值具有相同的类型,在您的情况下为“managedBean.objects”。在加载datatable之前,将filteredObjects变量设置为NULL。它会解决你的问题。
答案 2 :(得分:1)
<pdataTable widgetVar="departments" />
<p:commandButton value="#{lang:text('Add department')}"
id="....."
actionListener="....."
update="@form"
oncomplete="PF('departments').clearFilters()"
styleClass="........."/>
在我的情况下适用于素面