【问题标题】:How to provide Pagination in Data Tables with large dataframes using Dash如何使用 Dash 在具有大型数据帧的数据表中提供分页
【发布时间】:2018-07-31 13:22:19
【问题描述】:

我目前正在使用 dash-1.0.1。我正在创建一个公共仪表板,它以数据表的形式返回详细报告。但是数据表很大,我想为数据表提供 Pagination 功能和一个 show [no of entries] 下拉菜单以显示表中的条目数页面。

有什么方法可以实现吗?

【问题讨论】:

  • 你找到解决办法了吗?
  • 没有@Madhi 还没有!

标签: python-3.x datatable pagination plotly plotly-dash


【解决方案1】:

似乎分页选项已添加到 DataTable 类中,可使用多个参数进行配置。

基于here 给出的示例,我创建了一个带分页的 DataTable 的工作演示,并带有一个允许选择条目数的下拉菜单:

import dash
from dash.dependencies import Input, Output
import dash_table
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
df[' index'] = range(1, len(df) + 1)    
app = dash.Dash(__name__)    
PAGE_SIZE = 15    

app.layout = html.Div([    
    html.Div('Data table pagination test'),    
    dcc.Dropdown(    
        id='select_page_size',    
        options=[{'label': '5', 'value': 5}, {'label': '10', 'value': 10}, {'label': '15', 'value': 15}],    
        value=5    
    ),    
    html.Div(dash_table.DataTable(    
        id='datatable-paging',    
        columns=[{"name": i, "id": i} for i in df.columns],    
        data=df.to_dict("rows"),    
        page_size=PAGE_SIZE,    
        page_current=0,    
    ))    
])        

@app.callback(    
    Output('datatable-paging', 'page_size'),    
    [Input('select_page_size', 'value')])    
def update_graph(page_size):    
    return page_size

    
if __name__ == '__main__':    
    app.run_server(debug=True)

注意:在以前的版本中,DataTable 将分页设置作为字典接收:

dash_table.DataTable(
    ...
    pagination_settings={
        'current_page': 0,
        'page_size': PAGE_SIZE
    },
)

结果:

【讨论】:

  • 不起作用 带有 ID“events_table”的dash_table.DataTable 组件(版本 4.11.2)收到了一个意外的关键字参数:pagination_settings
  • @NehaJirafe 该解决方案确实适用于之前版本的 dash,因此不赞成投票。我更新了代码以支持最新版本的 dash。将来 - 撰写有用的评论甚至编辑和更新答案将为社区做出更多贡献,而不是简单地否决其他好的解决方案。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 2011-09-16
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2013-06-26
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多