如何编辑Streamlit AgGrid行的单元格?

2023-12-08

我已经创建了AgGrid通过从 csv 文件加载数据。我通过外部按钮逐行添加行。但是当我尝试编辑我添加的行时,它消失了。如果您能帮助我找出错误所在,我将不胜感激。代码如下。

import pandas as pd
import streamlit as st
from st_aggrid import AgGrid, GridUpdateMode,  JsCode
from st_aggrid.grid_options_builder import GridOptionsBuilder
import sys
import os
import altair as alt
from streamlit.runtime.legacy_caching import caching

def data_upload():
    df = pd.read_csv("data.csv")
    return df

if 'grid' in st.session_state:
    grid_table = st.session_state['grid']
    df = pd.DataFrame(grid_table['data'])
    df.to_csv(“data.csv”, index=False)
else:
    df = data_upload()

gd = GridOptionsBuilder.from_dataframe(df)
gd.configure_column("Location", editable=True)
gd.configure_column("HourlyRate", editable=True)
gd.configure_column("CollaboratorName", editable=True)

gridOptions = gd.build()


button = st.sidebar.button("Add Line")

if "button_state" not in st.session_state:
    st.session_state.button_state = False

if button or st.session_state.button_state:
    st.session_state.button_state = True
    data = [['', '', 0]]
    df_empty = pd.DataFrame(data, columns=['CollaboratorName', 'Location', "HourlyRate"])
    df = pd.concat([df, df_empty], axis=0, ignore_index=True)
    df.to_csv(“data.csv”, index=False)
    gd= GridOptionsBuilder.from_dataframe(df)


grid_table = AgGrid(df,
                    gridOptions=gridOptions,
                    fit_columns_on_grid_load=True,
                    height=500,
                    width='100%',
                    theme="streamlit",
                    key= 'unique',
                    update_mode=GridUpdateMode.GRID_CHANGED,
                    reload_data=True,
                    allow_unsafe_jscode=True,
                    editable=True
                    )
if 'grid' not in st.session_state:
    st.session_state['grid'] = grid_table
else:
    grid_table_df = pd.DataFrame(grid_table['data'])
    grid_table_df.to_csv(“data.csv”, index=False) 

您可以从这里看到正在运行的应用程序在此输入图像描述


这个有不同的方法,但目标可能是相同的。

如果值为,则创建两个单选按钮yes如果值为no没有新线。

如果您想添加新行,请选择“是”,然后添加您的条目​​。然后按更新按钮在侧边栏中。

enter image description here

如果您想编辑但不添加新行,请选择no,编辑现有条目,然后按更新按钮.

Code

import streamlit as st
from st_aggrid import AgGrid, GridOptionsBuilder
import pandas as pd


def data_upload():
    df = pd.read_csv("data.csv")
    return df


def show_grid(newline):
    st.header("This is AG Grid Table")
    df = data_upload()

    if newline == 'yes':
        data = [['', '', 0]]
        df_empty = pd.DataFrame(data, columns=['CollaboratorName', 'Location', "HourlyRate"])
        df = pd.concat([df, df_empty], axis=0, ignore_index=True)

    gb = GridOptionsBuilder.from_dataframe(df)
    gb.configure_default_column(editable=True)
    grid_table = AgGrid(
        df,
        height=400,
        gridOptions=gb.build(),
        fit_columns_on_grid_load=True,
        allow_unsafe_jscode=True,
    )
    return grid_table


def update(grid_table):
    grid_table_df = pd.DataFrame(grid_table['data'])
    grid_table_df.to_csv('data.csv', index=False)


# start
addline = st.sidebar.radio('Add New Line', options=['yes', 'no'], index=1, horizontal=True)
grid_table = show_grid(addline)
st.sidebar.button("Update", on_click=update, args=[grid_table])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编辑Streamlit AgGrid行的单元格? 的相关文章

随机推荐

  • Excel 2007 中的 Application.filesearch 带循环

    我已经进行了多次搜索 并且在使用现在不存在的 filesearch 时很难找到正确的代码 我已经研究过使用 Dir 和 FileSystemObject 但在搜索后使用循环时没有任何混乱 我希望你能够帮助我得出一个更容易的结论 简而言之 我
  • excel 2007宏验证输入单元格的数据并显示消息框(如果不正确)

    请有人帮忙编写以下代码 它在以下行给我一个错误 Set range C5 L14 这是完整的代码 Private Sub Worksheet Change ByVal Target As Excel range Dim ws As Work
  • if-else 与 ifelse 与列表的比较

    为什么 if else 结构和函数 ifelse 的行为不同 mylist lt list list a 1 b 2 list x 10 y 20 l1 lt ifelse sum sapply mylist class list 0 my
  • 如何异步调用 AWS Lambda 函数

    有谁知道异步而不是同步调用 Amazon AWS Lambda 函数的当前正确方法 AWS Java SDK 中的 InvokeAsync API 仍然可用 但标记为已弃用 他们建议您使用 Invoke API 我不明白为什么他们会强迫我们
  • 捆绑脚本无法正常工作 MVC

    我捆绑了 jquery 验证脚本 例如 bundles Add new ScriptBundle bundles jqueryval Include Scripts jquery unobtrusive Scripts jquery val
  • 强制 VB.NET 生成与 C# 相同的字符串比较表达式?

    这里有些类似的问题 C 和 VB Net 字符串比较的区别 但和我现在问的不一样 我正在创建一个简单的表达式遍历器 它将 lambda 转换为 SQL WHERE 子句 我这样称呼它 GetEntities
  • 如何在 Android Studio 0.5.1 上导入模块?

    我刚刚将 Android Studio 更新到 0 5 1 我需要将 Facebook SDK 导入到我的项目中 下列的脸书的指南 我应该 使用 Command 向下箭头打开 项目结构 对话框 在 OS X 上 选择左侧导航栏下的模块 单击
  • Android:http登录没有达到预期的效果

    我似乎无法让登录页面正常工作 它一直告诉我我的用户名 密码不正确 而我显然知道它们不正确 所以我开始调试并弹出 log v 我发现了一些有趣的东西 查找显示 class LogMeIn extends AsyncTask
  • MySQL统计最近7天的数据

    我有以下架构 表票 Field Type Null Key Default Extra id int 10 NO PRI NULL auto increme
  • 如何使用 cbt 从 BigTable 中删除带有前缀键的行范围

    看起来我可以用 cbt 读取带有前缀键的行 cbt project someproject instance someinstance read sometable prefix abc 但是如何使用 cbt 命令删除上述命令选择的那些行呢
  • JSONObject 包含转义字符

    我正在构建一个模拟器来将 JSON 数据发布到我正在运行的服务 JSON 应如下所示 sensor id SENSOR1 name SENSOR type Temperature value 100 12 lastDateValue Dat
  • Bash 测试运算符 [[ ... -eq ... ]] 中的错误或功能?

    有人可以解释一下以下之间的区别 VAR 1xyz VAR eq VAR 2 gt dev null echo Yes VAR VAR is an integer echo No VAR VAR is NOT an integer No VA
  • Jwt 策略后 ExecutionContext 中用户丢失

    目前我已经实现了 jwt 防护 它工作得很好 使用 Passport jwt 正在验证颁发的令牌 我可以通过 Request 通过 req user 查看用户 在实现基于角色的身份验证作为已经工作的附加组件后出现问题JWT 的守卫 我遵循了
  • 将 ERRORLEVEL 重置为零的最简单方法是什么?

    我有一个为 C 项目运行一些命令的构建后事件 最后一个命令有时会导致 ERRORLEVEL 值不等于 0 然后构建失败 我想附加一行额外的命令以始终将 ERRORLEVEL 值设置为零 最方便的方法是什么 如果你使用exit b 0你可以返
  • 在多个子图行中绘制条形图

    我有一个简单的长格式数据集 我想从中生成条形图 数据框如下所示 data Year 2019 2019 2019 2020 2020 2020 2021 2021 2021 Month diff 0 1 2 0 1 2 0 1 2 data
  • 在开发阶段在 Android 上测试 google 登录

    Google 登录始终返回未登录状态 使用 Android studio 在设备上推送应用程序时总是失败 但是 当我安装签名的应用程序时 它可以工作 当我们仍在开发应用程序时 如何使谷歌登录正常工作 在开发时 您可能正在使用调试密钥存储 获
  • h2o.glm lambda 搜索似乎没有迭代所有 lambda

    请考虑以下基本的可重现示例 library h2o h2o init data iris iris hex as h2o iris iris hex mod h2o glm y Sepal Length x setdiff colnames
  • ASP.NET单元测试Windows7/IIS7

    今天花了几个小时尝试针对 ASP NET 项目编写一些单元测试 这是 Visual Studio 2010 将 Windows 7 企业版与 IIS7 结合使用 我采取的步骤是 向解决方案添加了新的测试项目 打开一个类文件作为网站的一部分
  • 如何高效、快速地用 JButton 完全填充 JFrame?

    因此 我正在努力用 Java 重新创建扫雷游戏 现在我需要将 JFrame 上的所有按钮放置在网格中 我的代码如下 import javax swing import java util ArrayList import java awt
  • 如何编辑Streamlit AgGrid行的单元格?

    我已经创建了AgGrid通过从 csv 文件加载数据 我通过外部按钮逐行添加行 但是当我尝试编辑我添加的行时 它消失了 如果您能帮助我找出错误所在 我将不胜感激 代码如下 import pandas as pd import streaml