我使用数据表插件作为数据源。当用户在输入中键入一些数字时,我必须通过javascript更改一些列值(此输入也是表的一部分,我必须将此值导出到)。它运行良好,但是当我想导出表时,使用javascript更改的列不会显示在导出的文件中。
我认为问题是我没有刷新数据表插件。它是否正确?如果是,我该如何刷新数据源?如果没有可能是什么问题,我该如何解决?
我尝试了refresh()
方法(var dataTableObject = $(this).parents('table').dataTable(); dataTableObject.refresh();
)和$(this).parents('table').dataTable()
,但无效。
编辑:以下是如何更改单元格值:
$item.find('input.quantity-coefficient').each(function (i, d) {
$(d).off('change').on('change', function () {
var multiplier = $(this).val();
//var dataTableObject = $(this).parents('table').dataTable();
$($(this).data("row-price-info-class")).each(function (i, d) {
var priceContainer = $(d);
var price = parseFloat(priceContainer.data('price-value'));
var priceInfoRatioContainer = $(priceContainer.data("ratio-input-class"));
if (multiplier * price == 0) {
priceInfoRatioContainer.closest("td").addClass("no-euro");
priceInfoRatioContainer.html(" ");
} else {
priceInfoRatioContainer.closest("td").removeClass("no-euro");
priceInfoRatioContainer.html(localizeNumber(multiplier * price));
}
});
//TODO redrow the data
$(this).parents('table').dataTable().fnDraw();;
});
});
答案 0 :(得分:0)
您可以使用fnDraw()
刷新dataTable。在您的示例中:
$(this).parents('table').dataTable().fnDraw();
答案 1 :(得分:0)
谢谢你们,但我想我在这篇文章中找到了解决方案:jquery DataTables - change value of a cell not just display value
当我第一次尝试时,问题是我从1开始编号而不是从0开始。
因此,对于可能遇到此问题的其他人,我必须使用以下内容:
(this).parents('table').dataTable().fnUpdate("new value", 0, 2)
更新单元格值。实际上这不是我问的,因为这并没有刷新所有表格,但现在这对我来说是一个解决方案。