我想知道是否有人知道如何在 Dash 数据表中创建一个“全选”复选框(它应该在红框区域)?这个想法是它将选择数据表中的所有可用行。
我已经通读了整个 Datatable 文档(https://dash.plotly.com/datatable/interactivity),但没有提到这一点。尝试在线搜索也失败了。
我记得 dash-tables-experiment 有这个功能,但它已经被弃用了。任何意见是极大的赞赏。
目前,元素内不支持此选项dash_table.DataTable。但是,有一个解决方法,可以dbc.Button()在 Dash 中添加两个部分layout,第一个用于选择所有,第二个用于取消选择所有。然后,@app.callback单击按钮后即可选择(取消)选择所有内容。
你会得到这样的东西:
回调看起来像下面这样(感谢这个 git issues中的@neilpanchal ):
from loguru import logger
import dash
...
@app.callback(
[Output('df-table', 'selected_rows')],
[
Input('select-all-button', 'n_clicks'),
Input('deselect-all-button', 'n_clicks')
],
[
State('df-table', 'data'),
State('df-table', 'derived_virtual_data'),
State('df-table', 'derived_virtual_selected_rows')
]
)
def select_all(select_n_clicks, deselect_n_clicks, original_rows, filtered_rows, selected_rows):
ctx = dash.callback_context.triggered[0]
ctx_caller = ctx['prop_id']
if filtered_rows is not None:
if ctx_caller == 'select-all-button.n_clicks':
logger.info("Selecting all rows..")
selected_ids = [row for row in filtered_rows]
return [[i for i, row in enumerate(original_rows) if row in selected_ids]]
if ctx_caller == 'deselect-all-button.n_clicks':
logger.info("Deselecting all rows..")
return [[]]
raise PreventUpdate
else:
raise PreventUpdate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |