我有一个Dashtable,它在多个页面上有超过1000行。我需要通过单击它来显示活动单元格的内容。 只要我没有过滤破折号表中的行,它就可以正常工作。一旦我应用过滤器(过滤带有一些数据的行)并单击表中的单元格,它就会向我显示旧的单元格引用,这意味着它显示的不是新选择的位置的内容,而是旧引用。
">
"**# 回调函数
@app.callback([Output('textareaReq', 'children')], [Input('srctable', 'active_cell')], [State('srctable', 'data')]) # code for active cell click def get_active_cell_content(active_cell, data): if active_cell:`enter code here` location = active_cell strRow = data[location['row']] strActiveCell = strRow[location['column_id']] if strActiveCell: msg = strActiveCell return (html.P(msg))**
">
请注意,我在文本区域中显示输出
我知道这是一个老问题,但万一其他人来寻找答案,我设法让它工作,因为我遇到了同样的问题。
Plotly(现在?)允许您将 ID 列分配给数据表,以便在对表进行筛选或排序时,您可以使用此 ID 引用特定行,而不是依赖于行号:
df['id'] = df['your_id_column']
然后,在回调中,您可以打印active_cell
并获取作为row_id
返回的id
,当数据表被过滤和排序时,这将正确调整:
{'row': 1, 'column': 11, 'column_id': 'reason', 'row_id': 'H_195202'}
链接到相关文章。希望这有帮助!
https://dash.plotly.com/datatable/interactivity