在我的应用程序中使用 DataTable

Posted

技术标签:

【中文标题】在我的应用程序中使用 DataTable【英文标题】:Using a DataTable with my app 【发布时间】:2018-11-08 14:20:06 【问题描述】:

我正在使用Dash 使用 python 构建仪表板。我有以下代码:

import dash
import dash_core_components as dcc
import dash_table_experiments as dte
import dash_html_components as html
from datetime import datetime as dt

app = dash.Dash()

app.layout = html.Div([
    dcc.Location(id = 'url', refresh=False),
    html.Div(id = 'page-content')
])
app.config['suppress_callback_exceptions'] = True

def get_index():
    index = html.Div([
        dcc.Link('Live Data', href='/live')
    ], className = 'row')
    return index

live = html.Div([
    html.H1('Table '),
    dcc.DatePickerRange(
            id = 'selected-period',
            initial_visible_month=dt(2018, 4, 5),
            start_date = dt(2018, 4, 22),
            end_date=dt(2018, 4, 25)
    ),
    # dte.DataTable(
    #     rows= [],
    #     row_selectable = True,
    #     filterable = True,
    #     sortable = True,
    #     editable = False,
    #     id = 'data-table'
    # )
])

@app.callback(
    dash.dependencies.Output('page-content', 'children'),
    [dash.dependencies.Input('url', 'pathname')]
)
def display_correct_page(pathname):
    if pathname == '/live':
        return live
    else:
        return get_index()

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

我想使用dash_core_components.Link,但它似乎与dash_table_experiments 不兼容。当我在注释掉 dte.DataTable 的情况下运行此代码时,该应用程序运行良好。当我尝试使用dte.DataTable 部分运行应用程序时,我得到一个白屏。我不明白为什么会这样,因为我之前使用过dte.DataTable 并且我没有任何问题。问题似乎在于我使用的是dcc.Link,但我不明白为什么会这样。

问题:有没有办法将dte.DataTabledcc.Links 一起使用?如果是这样的话;如何更改我的脚本以显示所需的 DataTable?

(我知道我可以通过删除dcc.Link 部分并像一个非常基本的应用程序一样运行它来使这个脚本工作。我希望能够使用该链接,因为我想将两个不同的应用程序与@987654332 结合起来@.)

【问题讨论】:

您是否在浏览器控制台中看到任何错误? 【参考方案1】:

破折号expects 表示初始layout 包含所有组件,即您需要在布局中创建一个空表。

如果添加隐藏表

html.Div(dte.DataTable(rows=[]), style='display': 'none'),

到你的app.layout 它应该可以工作。

【讨论】:

还有一件事!如果我现在运行脚本,就会有两个 DataTables!如何在布局中隐藏它? @Mr.President:查看更新的答案,将表格包装在div 中并通过style 隐藏它应该可以做到。 我只剩下一个问题,我想你可以轻松回答,因为你这么好!我可以给你发消息吗?【参考方案2】:

很好的答案@maximilian。万一这对任何人都有帮助,在过去两年中,Dash DataTable 发生了很大变化,所以这是我在 DataTable 上制作的一个教程,可以帮助您入门。 https://youtu.be/USTqY4gH_VM

【讨论】:

以上是关于在我的应用程序中使用 DataTable的主要内容,如果未能解决你的问题,请参考以下文章

动态 Javascript 源数据 - DataTable

如何将 DataTable 转换为类 Object?

如何在 Angular 2 中使用 DataTable

在Angular 2中的Jquery Datatable中绑定按钮事件

DataTable:如何隐藏“显示 # 到 # 个条目(从 # 个条目中过滤)”?

通过 Ajax Laravel DataTable 返回 html 内容(使用 yajrabox 包)