我继承的一个使用 DataTables 的项目及其过滤器功能存在一些问题。
问题是在填充表格的主函数中,它具有以下代码:
var rowPos = mainTable.fnAddData(tableData, false)[0];
var rowData = mainTable.fnSettings().aoData[rowPos];
$(rowData.nTr).attr("id", "UID" + id); // Since the id doesn't always match the row
rowData.ID = id;
现在我知道第三行几乎没有用,除非 fnAddData 的“false”参数设置为“true”。这是因为 HTML 元素在设置为 'false' 时实际上并不存在于 DOM 中,因此无法设置 'id' 属性。
我不能使用'true',因为当向表格添加数百行时,它将在大约 4 秒内呈现表格。但是当我使用“假”时,它几乎会立即呈现表格(不到一秒)。所以在 'fnAddData()' 中使用 'true' 标志甚至不是一个选项。
我看到最后一行似乎在做某事,但我试图在 DataTables 网站上找到相关文档,但似乎找不到任何有价值的东西。我假设它允许某人将 UID(唯一记录 ID)绑定到实际的行号,这是想要的。
我的代码还使用了“fnRowCallback”,此时它尝试设置“id”属性,例如:
var id = mainTable.fnSettings().aoData[tablePos].ID;
$(row).attr("id", "UID" + id); // Since the id doesn't always match the row
主要问题是它似乎不起作用!如果我应用表过滤器并有意过滤掉除应为“UID”3 的记录之外的所有记录,在“fnRowCallback”中,我的“id”变量设置为 0。因此属性集始终为“UID0”并导致各种不好的参考。
有没有办法将我的数据库记录 ID 正确分配给表行?然后稍后再引用它们,例如在“fnRowCallback”函数中?还是有人设法弄清楚了其他一些技巧?
提前感谢您的时间和回复!
更新:2012.11.01 12:33 - 我已经根据迄今为止的各种发现在下面添加了一个答案!