Приложение работает локально, но после развертывания в 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 и т. д.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ks-locally