我有两个在python流中的AgGrid应用程序。两个AgGrid的连接和GridUpdateMode.MANUAL。我必须在第一个网格中选择行,然后单击update,这样第二个网格就可以从第一个网格中获得选定的行。第二个网格中的行应该被处理和保存。但是,我还必须删除第二个网格中的行。从第二个网格中删除行是用onRowSelected.实现的。
问题
注入onRowSelected的javascript代码工作并从UI中删除行,但是,具有数据的python变量没有更新,或者从UI中删除的行没有从实际变量中删除。
请帮助我在从UI中选择行时以及在后端变量.中删除行
代码:
js = JsCode(
"""
function(e) {
let api = e.api;
let sel = api.getSelectedRows();
const res = api.updateRowData({remove: sel});
api.refreshCells({force : true});
};
"""
)
col1, col2 = st.columns(2)
with st.container():
with col1:
smoke_gd = GridOptionsBuilder.from_dataframe(
df_alternatives[["article", "number"]]
)
smoke_gd.configure_default_column(
editable=False, resizable=True, sorteable=True
)
smoke_gd.configure_pagination(enabled=True)
smoke_gd.configure_side_bar()
smoke_gd.configure_selection(
selection_mode="multiple", use_checkbox=True
)
smoke_gd_gridoptions = smoke_gd.build()
smoke_grid_table = AgGrid(
df_alternatieven[["article", "number"]],
fit_columns_on_grid_load=True,
update_mode=GridUpdateMode.MANUAL,
gridOptions=smoke_gd_gridoptions,
enable_enterprise_modules=True,
allow_unsafe_jscode=True,
theme="fresh",
key="smoke_col1_gd",
)
selected_rows = smoke_grid_table["selected_rows"]
with col2:
smoke_col2_gd = GridOptionsBuilder.from_dataframe(
df_alternatives[["article", "number"]]
)
smoke_col2_gd.configure_default_column(
editable=False, resizable=True, sorteable=True
)
smoke_col2_gd.configure_pagination(enabled=True)
smoke_col2_gd.configure_grid_options(onRowSelected=js)
smoke_col2_gd.configure_side_bar()
smoke_col2_gd.configure_selection(
selection_mode="multiple", use_checkbox=True
)
smoke_col2_gd_gridoptions = smoke_col2_gd.build()
smoke_grid_table_filtered = AgGrid(
pd.DataFrame(selected_rows),
update_mode=GridUpdateMode.MANUAL,
gridOptions=smoke_col2_gd_gridoptions,
allow_unsafe_jscode=True,
reload_data=True,
key="smoke_col2_gd",
)发布于 2022-08-27 04:06:56
让JS直接在服务器端为您进行删除,强制刷新将在客户端自然地与最新版本一起进行吗?
您的JS代码可以变成:
js = JsCode(
"""
function(e) {
let api = e.api;
let sel = api.getSelectedRows();
const tx = {remove: rowsToRemove,};
gridOptions.api.applyServerSideTransaction(tx);
api.refreshCells({force : true});
};
"""
)https://stackoverflow.com/questions/73440660
复制相似问题