eastern-cyan•13mo ago
How to keep the filter after refresh on Antd Table?
@kapa.ai How to keep the filter when the page is refreshed with FilterDropdown?
5 Replies
Hi @regn. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
To keep the filter after refreshing the page with FilterDropdown in an Antd Table using refine, you can follow these steps:
1. Use the
getDefaultFilter function from @refinedev/core to retrieve the default filter value from the URL.
2. Add the defaultFilteredValue prop to your Table.Column component, using the value from getDefaultFilter.
Here's how you can modify your code to achieve this:
By adding the defaultFilteredValue prop with the getDefaultFilter function, the filter will be preserved when the page is refreshed. The getDefaultFilter function retrieves the filter value from the URL, allowing it to persist across page reloads.
For more information on initial filters and sorters, you can refer to the refine documentation on useTable (https://refine.dev/docs/ui-integrations/ant-design/hooks/use-table/#initial-filter-and-sorter).
If you want to set permanent filters that won't be cleared when the user changes the filter, you can use the filters.permanent property in the useTable hook:
This will set a permanent filter that won't be cleared when the user changes the filter or refreshes the page. You can find more information about permanent filters in the refine documentation (https://refine.dev/docs/ui-integrations/ant-design/hooks/use-table/#filterspermanent).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@336843331416096768> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
eastern-cyanOP•13mo ago
I did with this instead, because I have multiple mode select
defaultFilteredValue={getDefaultFilter("customer_id", filters, "in")}
@kapa.ai how to set the filter programmatically?Let me check the knowledge base for you again. One moment! :books:
----------------------
To set the filter programmatically in refine with Ant Design's Table component, you can use the
setFilters function provided by the useTable hook. Here's how you can do it:
1. First, import the useTable hook from @refinedev/antd:
2. In your component, destructure the setFilters function from the useTable hook:
3. You can then use the setFilters function to programmatically set the filters. Here's an example:
This will set a filter on the "name" field, using the "contains" operator with the value "Foo".
You can call this function wherever you need to set the filter programmatically, such as in a button click handler or useEffect hook.
Here's a more complete example:
It's important to note that by default, the setFilters function will merge the new filters with existing ones. If you want to replace all existing filters instead, you can pass "replace" as the second argument:
You can find more information about the setFilters function and its usage in the refine documentation for useTable (https://refine.dev/docs/ui-integrations/ant-design/hooks/use-table/#setfilters).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@336843331416096768> Kapa.ai is still learning and improving, please let me know how I did by reacting below.