4

「クリア」コマンドボタンを使用して、PrimeFaces DataTable のグローバル フィルタをクリアするにはどうすればよいですか? PrimeFaces フォーラムで同様の質問を見つけましたが、回答がないように見えます - そこにあるヒントは役に立ちませんでした。私は次のように問題を解決しようとしました:

<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"/>

列フィルターのみをクリアします。グローバル フィルターの値は不明のままです。問題を解決するのを手伝ってもらえますか?

4

4 に答える 4

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("");

update...このコードをcommandButtonで使用する場合は、ajax( )を使用する必要はありません。

onclickこのように使うだけ

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

return false;ボタンがあなたのページを送信しないように使用してください...

于 2013-02-13T22:44:04.930 に答える
3
<pdataTable  widgetVar="departments" />
<p:commandButton value="#{lang:text('Add department')}"
                 id="....."
                 actionListener="....."
                 update="@form"
                 oncomplete="PF('departments').clearFilters()"
                 styleClass="........."/>

私の場合、素顔の場合は機能します

于 2014-11-05T07:23:58.293 に答える
0

私の場合、言及された解決策は機能しませんでした。remoteCommandここで説明したように、 Primefaces Datatable does not reset filterを試しましたが、それも機能しませんでした。

ajax動作イベントで修正しました。

<p:dialog>
    <p:ajax event="open" update="myTableId" onstart="PF('myTable').clearFilters();" />

    <p:dataTable id="myTableId" widgetVar="myTable" ... >
        ...
    </p:dataTable>
</p:dialog>
于 2022-02-04T11:05:17.727 に答える