我有两个jqgrids设置,可以从'master'拖动到'target'网格。我放入“目标”网格的行不会保存到数据库中,而是具有生成的唯一ID(前缀为“new_”)。我有一个自定义寻呼机按钮,删除选定的行。对于已保存的行,事件将从数据库中删除该项并重新加载网格。这很好用。但是,当我想删除未保存到DB的拖动行时,不会删除该行。
这是我的按钮功能:
onClickButton: function () {
var deleteId = tgtGrid.getRowData(tgtGrid.getGridParam('selrow'))['ID'];
if (!deleteId) {
return false;
}
// remove an added row, not saved in DB
if (deleteId.indexOf('new_') != -1) {
tgtGrid.jqGrid('delRowData', deleteId);
} else {
// remove account saved in DB
$.post( url, { id: deleteId }, function (responseData) {
if (!responseData.success) {
// error here
} else {
// success here
tgtGrid.trigger('reloadGrid');
}
});
}
}
如果我将按钮设置为在保存的行tgtGrid.jqGrid('delRowData', deleteId);
上使用'delRowData',它将返回true并从网格中删除行(而不是数据库,如预期的那样)。
如何删除掉落的行?
答案 0 :(得分:0)
我发现问题在于jqgrid以及它如何查找要删除的元素。 tgtGrid.getRowData(pager.getGridParam('selrow'))['ID']
将返回您在列模型中设置为键的ID或列。但是,jqgrid查看<tr>
元素的ID以删除行,这在删除的行中不匹配。对于从数据库加载的数据,包含ID /键的<td>
元素将具有匹配的id
属性作为封闭的<tr>
元素。对于删除的行,<td>
元素是您所期望的,但封闭的<tr>
元素具有生成的id
属性,其值为“dnd_#”,其中#是一些生成的随机数。因此,您需要获取此id
以删除尚未保存到数据源的拖放行。以下是我提出的解决方案
var trId = $('td[title="' + deleteId + '"]').closest('tr').attr('id');
tgtGrid.jqGrid('delRowData', trId);