【问题标题】:How can I store data to javascript global variable in jquery Datatable如何将数据存储到 jquery Datatable 中的 javascript 全局变量中
【发布时间】:2016-04-29 04:45:58
【问题描述】:

我有一个包含大量数据的 jquery 数据表。我正在执行一个操作,选择(复选框选中)行将仅绑定在其中。现在我必须重置 jquery 数据表,即所有记录都应该再次显示。那么应该采取什么方法呢?我是否需要将数据存储到 全局变量 中,然后清除它并将这些数据再次分配给 Datatable 或其他方法。

////////// on document.ready/////////
$('#mytable').DataTable();
 GlobalTable = $('#mytable').DataTable();
 GlobalTab = GlobalTable.data();


/////////the below code is for Binding the data again/////////
var table = $('#mytable').DataTable();
table.clear().draw();
for (i = 0; i < GlobalTab.toArray().length; i++) {
     table.row.add(GlobalTab.toArray()[i]).draw();
   }                  
 table.draw();

我尝试过的这些行没有按预期正常工作。

【问题讨论】:

  • 什么不起作用;你能分享一个jsfiddle吗,这样调试起来很容易;
  • “没有按预期正常工作”..你能分享一个相同的演示吗?
  • 对不起,我只能分享上面提到的代码。我确实有一个表 id=mytable 我已经让数据在 TR 中循环。现在我有一个带有两个选项的下拉菜单。一种是查看全部和查看选定内容。选择 VIEW SELECTED 后数据绑定成功。但是当我选择 View All 时,它会显示相同的过滤数据。在这里我必须再次绑定数据表。这是上面剩下的代码。

标签: javascript jquery arrays datatables


【解决方案1】:

我不确定您的代码有什么问题(无法用您的 sn-ps 重现),但我可以提出几点建议:

  • 仅存储变量中的数据:GlobalTab = GlobalTable.data().toArray()
  • 清表后不需要重绘,或者添加每一行后,只需要更改数据后重绘
  • 您无需遍历行,只需一次调用即可将它们全部添加

所以要再次绑定数据,您需要执行以下操作:

var table = $('#mytable').DataTable();
table.clear();
table.rows.add(GlobalTable);
table.draw();

您可以在 jsfiddle 中看到一个工作示例

【讨论】:

  • 从这个GlobalTab = GlobalTable.data().toArray() 我得到这样的数组集合-Array[129] [0 … 99] [100 … 128] 但在 JSFiddle 它显示单输出仅限。
  • 当我尝试这个时-table.rows.add(GlobalTab) GlobalTab 包含数组 [129]。但它只添加了我为过滤器选择的一些记录。
  • @Puneet_2696717 我认为Array[0...99][100...128] 只是控制台显示大型数组的方式,只是为了简化浏览它们。此外,如果您的数据表有过滤器,它只会显示通过过滤器的数据。所有项目都在数据表中,只是没有显示其中的一些。
  • 实际上我正在绑定一个带有分页的 129 行的数据表。并且还提供了选择复选框。我们确实有一个下拉菜单可供选择 - 查看全部和查看选定内容。当我选择 [View selected] 时,仅绑定选定的行。但是当我选择 [View All] 时,它没有绑定所有记录,这就是我要求此解决方案的原因。
  • 抱歉,如果不重现该问题,我无法帮助您。也许您可以尝试在 jsfiddle 中重现它?
猜你喜欢
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多