从jqgrid中删除拖放的行

时间:2014-10-29 19:30:24

标签: javascript jquery jqgrid

我有两个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并从网格中删除行(而不是数据库,如预期的那样)。

如何删除掉落的行?

1 个答案:

答案 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);