-
Работает локально на моем компьютере
-
Работает после развертывания для моих коллег
-
После развертывания только на моем компьютере/браузере, сетка отображается, но щелчки по флажку не регистрируются
На моем компьютере (только развернутое приложение):
- При нажатии на флажок выбора строки ничего не происходит (выбор не изменяется)
- Нажмите флажок с редактируемым логическим значением () ничего не делает (значения не изменяются)
Код: Выделить всё
locked - Сетка отображается и прокручивается нормально — только установка флажка приводит к сбою
- Поскольку выбор никогда не обновляется, моя Панель назначений никогда не открывается
- Если пользователь выбирает любую строку с помощью флажка в столбце Выбрать, приложение должно открыть Панель назначений (изначально скрытую).
- Панель назначений отображается только в том случае, если selected_ids не пусто.
Этот упрощенный пример воспроизводит поведение: при выборе строк следует обновить выбранные_строки и отобразить раздел «Назначение».
Код: Выделить всё
import streamlit as st
import pandas as pd
from st_aggrid import AgGrid, GridOptionsBuilder, GridUpdateMode, JsCode, DataReturnMode
st.set_page_config(layout="wide")
st.title("AG Grid checkbox not clickable after deployment (client-specific)")
# ---- sample data ----
df = pd.DataFrame({
"unique_id": [1, 2, 3],
"name": ["A", "B", "C"],
"locked": [False, True, False],
})
# Add selection helper column (must be non-boolean to avoid double-checkbox effect)
df_view = df.copy()
df_view.insert(0, "Select", "") # Selection checkbox column
gb = GridOptionsBuilder.from_dataframe(df_view)
gb.configure_default_column(
editable=False,
resizable=True,
sortable=True,
filter=False,
suppressMenu=True,
)
# Selection config
gb.configure_selection(
selection_mode="multiple",
use_checkbox=False,
suppressRowClickSelection=True,
)
# Row selection checkbox column
gb.configure_column(
"Select",
checkboxSelection=True,
headerCheckboxSelection=True,
headerCheckboxSelectionFilteredOnly=True,
pinned="left",
width=90,
sortable=False,
filter=False,
)
# Editable boolean checkbox column
gb.configure_column(
"locked",
header_name="Locked",
editable=True,
cellRenderer="agCheckboxCellRenderer",
cellEditor="agCheckboxCellEditor",
type=["booleanColumn"],
width=90,
)
grid_options = gb.build()
# Stable row IDs + immutability (used in my real app)
grid_options["immutableData"] = True
grid_options["getRowId"] = JsCode("function(p){ return String(p.data.unique_id); }")
resp = AgGrid(
df_view,
gridOptions=grid_options,
update_mode=GridUpdateMode.VALUE_CHANGED | GridUpdateMode.SELECTION_CHANGED,
data_return_mode=DataReturnMode.AS_INPUT,
allow_unsafe_jscode=True,
theme="streamlit",
height=300,
key="grid",
)
# ---- selection -> open assignment panel ----
selected = resp.get("selected_rows", [])
st.write("Selected rows:", selected)
selected_ids = []
if isinstance(selected, list):
selected_ids = [r.get("unique_id") for r in selected if r.get("unique_id") is not None]
st.subheader("Assignment panel")
if selected_ids:
st.success(f"Assignment panel is OPEN (selected ids: {selected_ids})")
st.write("...assignment UI here...")
else:
st.info("Assignment panel is hidden until at least one row is selected.")
Код: Выделить всё
grid_resp = AgGrid(
t,
gridOptions=grid_options,
update_mode=GridUpdateMode.VALUE_CHANGED | GridUpdateMode.SELECTION_CHANGED,
data_return_mode=DataReturnMode.AS_INPUT,
allow_unsafe_jscode=True,
fit_columns_on_grid_load=True,
theme="streamlit",
height=520,
key=f"supplier_grid_{st.session_state.get('bulk_widget_reset_counter', 0)}",
)
- Python: 3.12
- streamlit: 1.41.1
- streamlit-aggrid: 1.1.0
- Развертывание: Служба приложений Azure (Linux) (также протестировано аналогичным образом в Streamlit Cloud)
- Принудительное обновление + очистка кэша
- Другой браузер + инкогнито
- Отключенные расширения / adblock
- Изменен ключ сетки= для принудительного повторного монтирования
- Отключены immutableData
- Пропробованы различные комбинации GridUpdateMode
- Удален пользовательский CSS (включая скрытие AG Grid) меню)
- Проверенные типы данных (столбец выбора — строка, заблокирован — логическое значение)
Это происходит только для меня в развернутом приложении.
То же самое развертывание работает и для коллег.
/>Что может привести к тому, что события щелчков по флажку AG Grid будут заблокированы только для определенного клиента после развертывания?
Любые известные проблемы с:
- Streamlit iframe/обработкой событий,
- настройками безопасности браузера,
- наложением CSS / z-index / pointer-events,
- корпоративные прокси/внедренные скрипты,
- илиstreamlit-aggrid + поведение средства рендеринга/редактора ячеек флажка AG Grid?
Подробнее здесь: https://stackoverflow.com/questions/798 ... lection-va