2014-10-29 73 views
0

我有两个jqgrids设置,可以从'主'拖动到'目标'网格。我放入'目标'网格的行不会保存到数据库,并具有生成的唯一ID(以“new_”作为前缀)。我有一个自定义寻呼机按钮,删除所选的行。对于保存的行,事件将从数据库中删除项目并重新加载网格。这工作正常。但是,当我想要删除未保存到数据库的拖动行时,该行不会被删除。删除从jqgrid拖放的行

这里是我的按钮功能:

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'); 
         } 
        }); 
       } 

      } 

如果我设置了按钮,使用“delRowData”上保存的行tgtGrid.jqGrid('delRowData', deleteId);它返回true,该行从电网(不是DB,如删除预期)。

如何删除掉线的行?

回答

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