You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:55:13