在Streamlit与Ag-Grid中根据另一列值设置列背景色问题排查
问题排查与修复
你的代码无法运行的核心问题是在JS代码中错误使用了Python的DataFrame语法,Ag-Grid的JS回调函数需要通过params.data来访问当前行的完整数据,而不是直接调用Python的df对象。另外还有一处变量名拼写错误(cellsytle_jscode应为cellstyle_jscode)。
修正后的代码
cellstyle_jscode = JsCode(""" function(params) { // 通过params.data获取当前行的Header B列值 if (params.data['Header B'] === 'yes') { return { 'color': 'white', 'backgroundColor': 'green' } } else { return { 'color': 'black', 'backgroundColor': 'red' } } }; """) gb.configure_column("Header A", cellStyle=cellstyle_jscode)
关键修正点
- 替换
df['Header B'].value为params.data['Header B']:Ag-Grid的JS回调中,params对象包含当前单元格的上下文信息,params.data对应整行的数据记录,直接通过列名即可获取对应值。 - 修正变量名拼写:
cellsytle_jscode改为cellstyle_jscode,避免因变量名错误导致的引用失败。 - 建议使用
===严格相等判断:JS中===会同时校验值和类型,比==更严谨,避免潜在的类型匹配问题。
内容的提问来源于stack exchange,提问作者Miguel Gonzalez
相关产品推荐
相关产品推荐

