【问题标题】:How to add rows of tr tags in Datatables如何在数据表中添加多行 tr 标签
【发布时间】:2017-02-12 16:45:29
【问题描述】:

根据数据表documentation“每个数据元素可能是一个数组、对象、Javascript 对象实例或一个 tr 元素。”如果我使用 ajax 返回一个字符串数组,然后使用 rows.add 方法,它似乎将每个字符都解释为一个单元格值:

HTML

<table id="dt">
  <thead>
    <tr>
      <th>column 1</th><th>column 2</th>
    </tr>
  </thead>
  <tbody>
    <tr><td>row 0 col 1;</td><td>row 0 col 2;</td></tr>
  </tbody>
</table>
<button id="mybutton" type='submit'>Add rows</button>

JS

var data = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"];

var datatable = $('#dt').DataTable();

$("body").on('click', '#mybutton', function(evt){
    console.log ("button clicked");
    datatable.rows.add(data);
    datatable.draw();   
    evt.preventDefault();
})

示例输出

我创建了一个简单的fiddle 来展示这个。 我做错了什么?

【问题讨论】:

  • 只需创建一个要添加的值数组。让datatable创建tr、td等
  • 您的按钮类型应为“按钮”时提交。

标签: datatables datatables-1.10


【解决方案1】:

由于此代码直接更改 HTML,因此您需要销毁并重建数据表以使其显示在数据对象中。这段代码就是这样做的。

        $(document).ready(function () {
            var md = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"];

            var datatable = $('#dt').DataTable();


            $('#mybutton').on('click', function (evt) {
                datatable.destroy();
                $.each(md, function (i, item) {

                    $('#dt tbody').append(item)
                });
               datatable = $('#dt').DataTable();

            })

        });

【讨论】:

  • 我遇到了同样的问题,这个解决方案效果很好。
【解决方案2】:

如上所述,我通常不会将 html 添加到数据中。只需传入数据。但是,如果您有实际理由这样做,这里有一种可行的方法。

var data = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"];

var datatable = $('#dt').DataTable();

$('#mybutton').on('click',  function(evt){
  $.each(data, function(i, item){$('#dt tbody').append(item)});
  datatable.rows.invalidate().draw()
})

【讨论】:

  • 非常感谢。这确实显示了新行,但似乎没有正确地将它们包含在数据结构中,因为数据表信息仍然显示“0 行”并且搜索没有找到任何内容。我仍然对文档中的评论感到困惑,这表明我应该能够使用带有 tr 标签的 rows.add() 函数,但我想我会追求你的其他建议。
  • 此代码因错误而有效。我的错,忽略它
【解决方案3】:

其实我就是这样做的。

var data = [["row 1 col 1","row 1 col 2;"],[ "row 2 col 1;", "row 2 col 2;"]];

var datatable = $('#dt').DataTable();

$('#mybutton').on('click',  function(evt){
  datatable.rows.add(data).draw()
})

【讨论】:

  • 我可以看到这个解决方案有效,但我对这种方法的问题是它意味着围绕生成数据表友好格式的表数据来构建整个脚本。我真正喜欢数据表的地方在于能够通过单个 jQuery 函数调用访问大部分功能,这意味着您可以在事后添加它(这就是我正在做的)。
  • 其实这个比较现实。基本上,您所要做的就是将数据从数据库中提取出来,放入一个数组或对象数组中,然后发送给客户端。从那时起,DataTable 将承担起重担。
猜你喜欢
  • 2021-01-11
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 2017-11-05
  • 1970-01-01
  • 2014-09-15
相关资源
最近更新 更多