javascript - DataTables - 使用 fnUpdate 更新行替换不同的行
javascript - DataTables - updating row using fnUpdate replaces different row
我在每一行中都有 Edit 按钮,在 click 行中的数据被传递到模式,用户可以在其中更改它,然后在模式中 Save 它应该更新该行。
我正在使用 fnUpdate,但是没有更新(替换)预期的行,而是替换了不同的行...
var uId = $(this).closest('.modal-content').find('input[name=uId]').val();
var fNameUpdated = $(this).closest('.modal-content').find('input[name=fName]').val();
var lNameUpdated = $(this).closest('.modal-content').find('input[name=lName]').val();
var uTypeUpdated = $(this).closest('.modal-content').find('.dropdown-toggle').attr('title');
var uNameUpdated = $(this).closest('.modal-content').find('input[name=uName]').val();
var uPasswordUpdated = $(this).closest('.modal-content').find('input[name=password]').val();
var buttons = 'buttons';
// updating row using fnUpdate from datatable
var oTable = $('#dataTables-example').dataTable();
oTable.fnUpdate( [uId, fNameUpdated, lNameUpdated, uTypeUpdated, uNameUpdated, uPasswordUpdated, buttons], trIndex );
trIndex 较早收到:
var trIndex;
$('#dataTables-example').dataTable().find('tbody').on('click', 'tr', function () {
trIndex = this.rowIndex;
});
Table 在编辑第 1 行之前:
+-----+------------+-----------+---------+----------+------+---------------+
| ID | First Name | Last Name | Type | Username | Pass | Action |
+-----+------------+-----------+---------+----------+------+---------------+
| 1 | Mark | Knopfler | admin | Mark | pass | Edit / Delete |
| 2 | Peter | Pan | admin | Peter | pass | Edit / Delete |
| 3 | Bob | Dylan | regUser | Bob | pass | Edit / Delete |
| 4 | Harry | Angel | regUser | Harry | pass | Edit / Delete |
| ... | ... | ... | ... | ... | ... | ... |
+-----+------------+-----------+---------+----------+------+---------------+
Table 编辑第 1 行后:
+-----+------------+-----------+---------+----------+------+---------------+
| ID | First Name | Last Name | Type | Username | Pass | Action |
+-----+------------+-----------+---------+----------+------+---------------+
| 1 | Mark | Knopfler | admin | Mark | pass | Edit / Delete |
| 1 | Harrison | Ford | regUser | Harrison | pass | Edit / Delete |
| 3 | Bob | Dylan | regUser | Bob | pass | Edit / Delete |
| 4 | Harry | Angel | regUser | Harry | pass | Edit / Delete |
| ... | ... | ... | ... | ... | ... | ... |
+-----+------------+-----------+---------+----------+------+---------------+
有谁能指点一下吗
编辑:
1) 可能有更有效的数据收集方式
2) 字段通过仅用于测试目的
找到的解决方案:
显然接收 trIndex 的方法是错误的,应更正如下:
$('#dataTables-example tbody').on('click', 'td', function () {
var tr = $(this).closest('tr');
rowIndex = tr.index();
});
以上似乎工作正常。
我在每一行中都有 Edit 按钮,在 click 行中的数据被传递到模式,用户可以在其中更改它,然后在模式中 Save 它应该更新该行。
我正在使用 fnUpdate,但是没有更新(替换)预期的行,而是替换了不同的行...
var uId = $(this).closest('.modal-content').find('input[name=uId]').val();
var fNameUpdated = $(this).closest('.modal-content').find('input[name=fName]').val();
var lNameUpdated = $(this).closest('.modal-content').find('input[name=lName]').val();
var uTypeUpdated = $(this).closest('.modal-content').find('.dropdown-toggle').attr('title');
var uNameUpdated = $(this).closest('.modal-content').find('input[name=uName]').val();
var uPasswordUpdated = $(this).closest('.modal-content').find('input[name=password]').val();
var buttons = 'buttons';
// updating row using fnUpdate from datatable
var oTable = $('#dataTables-example').dataTable();
oTable.fnUpdate( [uId, fNameUpdated, lNameUpdated, uTypeUpdated, uNameUpdated, uPasswordUpdated, buttons], trIndex );
trIndex 较早收到:
var trIndex;
$('#dataTables-example').dataTable().find('tbody').on('click', 'tr', function () {
trIndex = this.rowIndex;
});
Table 在编辑第 1 行之前:
+-----+------------+-----------+---------+----------+------+---------------+
| ID | First Name | Last Name | Type | Username | Pass | Action |
+-----+------------+-----------+---------+----------+------+---------------+
| 1 | Mark | Knopfler | admin | Mark | pass | Edit / Delete |
| 2 | Peter | Pan | admin | Peter | pass | Edit / Delete |
| 3 | Bob | Dylan | regUser | Bob | pass | Edit / Delete |
| 4 | Harry | Angel | regUser | Harry | pass | Edit / Delete |
| ... | ... | ... | ... | ... | ... | ... |
+-----+------------+-----------+---------+----------+------+---------------+
Table 编辑第 1 行后:
+-----+------------+-----------+---------+----------+------+---------------+
| ID | First Name | Last Name | Type | Username | Pass | Action |
+-----+------------+-----------+---------+----------+------+---------------+
| 1 | Mark | Knopfler | admin | Mark | pass | Edit / Delete |
| 1 | Harrison | Ford | regUser | Harrison | pass | Edit / Delete |
| 3 | Bob | Dylan | regUser | Bob | pass | Edit / Delete |
| 4 | Harry | Angel | regUser | Harry | pass | Edit / Delete |
| ... | ... | ... | ... | ... | ... | ... |
+-----+------------+-----------+---------+----------+------+---------------+
有谁能指点一下吗
编辑:
1) 可能有更有效的数据收集方式
2) 字段通过仅用于测试目的
找到的解决方案:
显然接收 trIndex 的方法是错误的,应更正如下:
$('#dataTables-example tbody').on('click', 'td', function () {
var tr = $(this).closest('tr');
rowIndex = tr.index();
});
以上似乎工作正常。