Anonymous
Флажки st-aggrid перестают обновляться после развертывания (работает локально)
Сообщение
Anonymous » 23 янв 2026, 20:26
Проблема:
Приложение работает локально, но после развертывания в Azure у некоторых пользователей флажок отображается, но выбор строк/переключение логического значения не обновляет selected_rows или возвращаемые данные. Поскольку выделение остается пустым, панель «Назначение» никогда не открывается. У меня есть ограничения доступа по IP-адресу в Azure, поэтому приложение могут видеть только те, чьи IP-адреса указаны в Azure.
Ожидается:
Нажатие кнопки «Выбрать» обновляет выбранные_строки → отображается панель назначений.
Нажатие заблокированного флажка обновляет данные сетки.
Пример кода:
Код: Выделить всё
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("st-aggrid checkbox issue repro")
# Minimal dataset
df = pd.DataFrame(
{
"unique_id": [1, 2, 3, 4, 5],
"name": ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"],
"locked": [False, True, False, False, True],
"__blocked": [False, False, False, False, False],
"__can_lock": [True, True, True, True, True],
}
)
# Create a separate "Select" column to force checkboxSelection rendering
t = df.copy()
t.insert(0, "Select", "") # must be non-boolean to avoid double-checkbox
gb = GridOptionsBuilder.from_dataframe(t)
# Default columns read-only; we enable edit only for "locked"
gb.configure_default_column(
editable=False,
resizable=True,
sortable=True,
filter=False,
suppressMenu=True,
)
# Hide helpers
gb.configure_column("unique_id", hide=True)
gb.configure_column("__blocked", hide=True)
gb.configure_column("__can_lock", hide=True)
# Enable checkbox selection in a dedicated column
gb.configure_selection(
selection_mode="multiple",
use_checkbox=False,
suppressRowClickSelection=True,
suppressRowDeselection=False,
)
gb.configure_column(
"Select",
header_name="Select",
checkboxSelection=True,
headerCheckboxSelection=True,
headerCheckboxSelectionFilteredOnly=True,
pinned="left",
width=90,
sortable=False,
filter=False,
)
# Editable boolean checkbox column
can_edit_locked = JsCode("""
function(p){
if (!p.data) return false;
if (p.data.__blocked) return false;
return !!p.data.__can_lock;
}
""")
gb.configure_column(
"locked",
header_name="Locked",
editable=can_edit_locked,
cellRenderer="agCheckboxCellRenderer",
cellEditor="agCheckboxCellEditor",
type=["booleanColumn"],
width=90,
)
grid_options = gb.build()
# Immutable data + stable row id
grid_options["immutableData"] = True
grid_options["getRowId"] = JsCode("function(p){ return String(p.data.unique_id); }")
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=350,
key="grid_repro",
)
st.subheader("Debug output")
st.write("Selected rows:", grid_resp.get("selected_rows"))
st.write("Returned data:", grid_resp.get("data"))
Развертывание + информация о клиенте:
streamlit==1.41.1,streamlit-aggrid==1.1.0, Python=3.12
Служба приложений Azure.
Я уже пробовал:
Принудительное обновление/очистка данных сайта.
Другой браузер/инкогнито.
Отключить расширения.
Изменить ключ компонента, перемонтировать, отключить immutableData и т. д.
Что может блокировать события флажка st-aggrid только на некоторых клиентах после развертывания?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... ks-locally
1769189177
Anonymous
[b]Проблема:[/b] Приложение работает локально, но после развертывания в Azure у некоторых пользователей флажок отображается, но выбор строк/переключение логического значения не обновляет selected_rows или возвращаемые данные. Поскольку выделение остается пустым, панель «Назначение» никогда не открывается. У меня есть ограничения доступа по IP-адресу в Azure, поэтому приложение могут видеть только те, чьи IP-адреса указаны в Azure. [b]Ожидается:[/b] [list] [*]Нажатие кнопки «Выбрать» обновляет выбранные_строки → отображается панель назначений. [*]Нажатие заблокированного флажка обновляет данные сетки. [/list] [b]Пример кода:[/b] [code] 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("st-aggrid checkbox issue repro") # Minimal dataset df = pd.DataFrame( { "unique_id": [1, 2, 3, 4, 5], "name": ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"], "locked": [False, True, False, False, True], "__blocked": [False, False, False, False, False], "__can_lock": [True, True, True, True, True], } ) # Create a separate "Select" column to force checkboxSelection rendering t = df.copy() t.insert(0, "Select", "") # must be non-boolean to avoid double-checkbox gb = GridOptionsBuilder.from_dataframe(t) # Default columns read-only; we enable edit only for "locked" gb.configure_default_column( editable=False, resizable=True, sortable=True, filter=False, suppressMenu=True, ) # Hide helpers gb.configure_column("unique_id", hide=True) gb.configure_column("__blocked", hide=True) gb.configure_column("__can_lock", hide=True) # Enable checkbox selection in a dedicated column gb.configure_selection( selection_mode="multiple", use_checkbox=False, suppressRowClickSelection=True, suppressRowDeselection=False, ) gb.configure_column( "Select", header_name="Select", checkboxSelection=True, headerCheckboxSelection=True, headerCheckboxSelectionFilteredOnly=True, pinned="left", width=90, sortable=False, filter=False, ) # Editable boolean checkbox column can_edit_locked = JsCode(""" function(p){ if (!p.data) return false; if (p.data.__blocked) return false; return !!p.data.__can_lock; } """) gb.configure_column( "locked", header_name="Locked", editable=can_edit_locked, cellRenderer="agCheckboxCellRenderer", cellEditor="agCheckboxCellEditor", type=["booleanColumn"], width=90, ) grid_options = gb.build() # Immutable data + stable row id grid_options["immutableData"] = True grid_options["getRowId"] = JsCode("function(p){ return String(p.data.unique_id); }") 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=350, key="grid_repro", ) st.subheader("Debug output") st.write("Selected rows:", grid_resp.get("selected_rows")) st.write("Returned data:", grid_resp.get("data")) [/code] [b]Развертывание + информация о клиенте:[/b] [list] [*]streamlit==1.41.1,streamlit-aggrid==1.1.0, Python=3.12 [*]Служба приложений Azure. [/list] [b]Я уже пробовал:[/b] [list] [*]Принудительное обновление/очистка данных сайта. [*]Другой браузер/инкогнито. [*]Отключить расширения. [*]Изменить ключ компонента, перемонтировать, отключить immutableData и т. д. [/list] Что может блокировать события флажка st-aggrid только на некоторых клиентах после развертывания? Подробнее здесь: [url]https://stackoverflow.com/questions/79874770/st-aggrid-checkboxes-stop-updating-after-deployment-works-locally[/url]