I have a multi-page Streamlit app with an AgGrid component on one page. I would like the state of the AgGrid to persist as I change pages (i.e., when I navigate back to its page it is exactly as I left it). Right now, when I navigate to a new page then back, it completely resets the AgGrid display. I want to persist column filter and sort as well as checkboxes selected for
selection_mode="multiple". I see two options to solve this:
Can I make Streamlit persist the AgGrid across pages? I can’t figure out when it re-renders the grid and then how to stop it from doing so. (I tested with multiple tabs on the same page and it works, i.e., grid does not reset when you change tabs.)
Can I manually save AgGrid state and re-initialize it?
GridOptionsBuilder.configure_selectionseems to provide a solution for checkboxes using
pre_selected_rowsoption but I don’t see a way to set column filters, only to set the properties of columns, like if its sortable, in
# 00_home.py import streamlit as st st.write("Hello World") # pages\01_aggrid_demo.py import pandas as pd from st_aggrid import GridOptionsBuilder, AgGrid, GridUpdateMode, DataReturnMode from st_aggrid.shared import ColumnsAutoSizeMode def display_grid(df: pd.DataFrame): gb = GridOptionsBuilder.from_dataframe(df) gb.configure_selection( selection_mode="multiple", use_checkbox=True, pre_selected_rows=None, # <-- Set to manually persist checkbox state ) gridOptions = gb.build() AgGrid( df, gridOptions=gridOptions, update_mode=GridUpdateMode.GRID_CHANGED, columns_auto_size_mode=ColumnsAutoSizeMode.FIT_CONTENTS, data_return_mode=DataReturnMode.FILTERED # <-- Gets filtered data, but not filters applied to columns ) # Dummy data df = pd.util.testing.makeMixedDataFrame() display_grid(df)