【发布时间】:2015-12-15 13:26:32
【问题描述】:
我有一个 jQuery DataTable 对象,其中包含日志信息 - 应用程序在特定日期范围内记录了多少异常类型的日志消息、信息等。我想在将日志消息发送到底层数据库时更新这些值。我目前正在使用 javascript 根据 AppId 在 HTML 表中查找一个单元格,并使用新的日志总数更新 innerHTML。但是,由于并非所有应用程序都是可见的,例如如果有 15 个但表仅设置为显示 10 个条目,我想更新 DataTable 对象中的值,以便在应用程序包含在表中时这些值是正确的。
我已经尝试通过这样做来更改 DataTable 中的值
var rows = table.rows().data();
var arr = data.aaData;
for (var i = 0; i < arr.length; i++) {
for (var r = 0; r < rows.length; r++) {
if (arr[i].ApplicationId == rows[r].AppId) {
if (arr[i].Debug != 0 || arr[i].Information != 0 || arr[i].Message != 0 || arr[i].Warning != 0 || arr[i].Exception != 0) {
//New Exception Count
if (arr[i].Exception !== 0) {
rows[r].Exception = arr[i].Exception;
flash(rows[r].AppId, 'Exception');
}
//New Warning Count
if (arr[i].Warning !== 0) {
rows[r].Warning = arr[i].Warning;
flash(rows[r].AppId, 'Warning');
}
//New Message Count
if (arr[i].Message !== 0) {
rows[r].Message = arr[i].Message;
flash(rows[r].AppId, 'Message');
}
//New Information Count
if (arr[i].Information !== 0) {
rows[r].Information = arr[i].Information;
flash(rows[r].AppId, 'Information');
}
//New Debug Count
if (arr[i].Debug !== 0) {
rows[r].Debug = arr[i].Debug;
flash(rows[r].AppId, 'Debug');
}
}
}
}
}
table.draw();
其中data.aaData 是从控制器方法返回的 JSON 格式数据。
将rows 记录到控制台我可以看到DataTable 对象中的值已更新,但在table.draw() 调用期间这些新值并未呈现到HTML 表中。
那么有没有人有一个标准的方法来更改 DataTable 中的值?例如,我尝试过使用table.cell(r, 5).data(someNewValue);,但这似乎会产生一些不可靠的结果。
【问题讨论】:
-
如何将更改提交到数据库?
标签: javascript datatables