如何在streamlit-aggrid中仅设置部分列可编辑?
实现Streamlit-AgGrid部分列可编辑的方案
要实现仅部分列可编辑,不能直接给全局的editable传列子集,而是需要通过单独配置列定义来指定哪些列允许编辑。具体实现如下:
完整代码示例
import streamlit as st import pandas as pd from st_aggrid import GridOptionsBuilder, AgGrid # 加载目标CSV文件 df = pd.read_csv("your_data.csv") # 替换为你的CSV文件路径 # 初始化GridOptionsBuilder生成基础配置 gb = GridOptionsBuilder.from_dataframe(df) # 设置全局默认所有列不可编辑 gb.configure_default_column(editable=False) # 指定需要开启编辑权限的列名(替换成你的目标列) editable_cols = ["产品名称", "库存数量"] for col in editable_cols: # 单独为这些列覆盖全局配置,开启编辑 gb.configure_column(col, editable=True) # 构建最终的表格配置 grid_options = gb.build() # 渲染可编辑表格(allow_unsafe_jscode确保自定义列配置生效) grid_response = AgGrid( df, gridOptions=grid_options, allow_unsafe_jscode=True, height=400, fit_columns_on_grid_load=True ) # 获取编辑后的表格数据(可选) edited_df = grid_response["data"] st.dataframe(edited_df)
核心逻辑说明
configure_default_column(editable=False):先统一设置所有列默认不可编辑,避免全局开启后再逐个关闭的冗余操作configure_column(col, editable=True):针对需要编辑的列单独配置,覆盖全局默认规则allow_unsafe_jscode=True:部分自定义列属性需要该参数才能生效,否则配置可能不被应用
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

