2014-10-29 88 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);