【问题标题】:Bootstrap datatables: Can't display data in expanded row if I get data by AJAX引导数据表:如果我通过 AJAX 获取数据,则无法在展开的行中显示数据
【发布时间】:2017-03-16 13:59:15
【问题描述】:

我使用DataTables 来显示一些数据。我需要使每一行都可折叠,并在单击它后下载有关当前行的一些附加信息。

基于documentation我已经准备好了:

$('#tasks tbody').on('click', 'tr.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row(tr);

    if (row.child.isShown()) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    }
    else {
        // Open this row
        row.child(getToolsForUser(row.data())).show();
        tr.addClass('shown');
    }
});

只有当我从getToolsForUser() 返回静态数据时它才能工作。通过AJAX获取数据并在success函数中返回,控制台报错:

TypeError: row.child(...) 未定义

我也试过$.Deferreddone(),结果是一样的^

您可以找到here 的实时示例。

(注释第 17 行并取消注释第 19 行以使其正常工作 - 但仅限于静态数据)

如何在从row.child().show() 调用的函数中使用ajax 调用?

【问题讨论】:

  • 在这一行之后 'var row = table.row(tr);'什么是“行”值?
  • 这是一个工作示例,jsfiddle.net/8ae3b5sz
  • @Jatinpatil :非常感谢您!请添加您的评论作为答案 - 我会将其标记为解决方案。

标签: javascript jquery ajax twitter-bootstrap datatables


【解决方案1】:

尝试在ajax调用成功时追加数据,

success: function (response) {
                currentElement.child(JSON.stringify( response)).show();
            },

我已经修改了小提琴,这是适合您的解决方案,
https://jsfiddle.net/8ae3b5sz/

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2017-12-30
    • 2021-11-06
    • 2015-12-22
    相关资源
    最近更新 更多