【问题标题】:Jquery DataTable deletion applies on the first row onlyJquery DataTable 删除仅适用于第一行
【发布时间】:2018-05-07 07:20:20
【问题描述】:

我有一个有几行的表

我想删除所有包含“拉巴特”作为城市的行,但什么也没发生。但是,当我更改第一行的值时,它起作用了。 那么为什么它只适用于第一行呢?

这是我的代码:

$("#btnSave").click(function() { 
       var table = $("#mainTable").DataTable({});
       var nodes = [];

       table.rows().every(function(rowIdx, tableLoop, rowLoop) {
          if (this.data()[3] == 'Rabat') 
              nodes.push(this.node())
       })
       nodes.forEach(function(node) {
          table.row(node).remove().draw()
       })
});

HTML 代码:

<table id="mainTable" class="table table-striped">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>Name</th>
                                <th>Country</th>
                                <th>City</th>
                            </tr>
                        </thead>
                        @foreach (var item in Model)
                        {
                            <tbody>
                                <tr>
                                    <td>@item.id</td>
                                    <td>@item.name</td>
                                    <td>@item.country</td>
                                    <td>@item.city</td>
                                </tr>
                            </tbody>
                        }
     </table>

【问题讨论】:

  • this.data()[3] 将成为问题。
  • 但为什么它适用于第一行?
  • 调试代码时发现第一行正常,但其他行未定义
  • 你在第一行使用什么?你能写出哪一个工作的代码吗?
  • 我有一个从数据库中获取数据的 foreach 循环。我将编辑帖子为 ASP.NET 添加另一个标签

标签: jquery asp.net asp.net-mvc asp.net-mvc-4 datatables


【解决方案1】:

你不小心创建了多个&lt;tbody&gt;

@foreach (var item in Model)
{
<tbody>
   <tr>
      <td>@item.id</td>
      <td>@item.name</td>
      <td>@item.country</td>
      <td>@item.city</td>
   </tr>
</tbody>
}

应该是

<tbody>
@foreach (var item in Model)
{
   <tr>
      <td>@item.id</td>
      <td>@item.name</td>
      <td>@item.country</td>
      <td>@item.city</td>
   </tr>
}
</tbody>

DataTables 一次只能处理一个&lt;tbody&gt;,这就是为什么它只适用于第一行。

除此之外,您应该在检索 dataTable 实例时使用var table = $("#mainTable").DataTable();如果您使用大括号,即传递一个对象,您也会意外地重新初始化表格。

【讨论】:

  • 天哪!我没注意!谢谢@davidkonrad
猜你喜欢
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多