2012-06-08 41 views
1

我想測試添加一個新行並刪除jqGrid中的行,我發現網格不刷新顯示新行或刪除添加/刪除行後刪除行。服務器端部分還沒有添加/刪除,所以我只是給editurl提供了我用來將數據加載到網格中的相同url。jqGrid:navGrid reloadAfterSubmit沒有添加新行,當editurl無效

.navGrid('#' + id + '-pager', 
      {addtext: 'Add Code Value', deltext: 'Delete Code Value', edit:false,add:true,del:true,search:false, refresh:false}, 
      {closeAfterAdd: true, reloadAfterSubmit: true} /* Edit options */, 
      {closeAfterAdd: true, reloadAfterSubmit: true} /* Add options */, 
      {reloadAfterSubmit: true} /* Delete options */); 

我在這裏錯過了什麼嗎?我認爲reloadAfterSubmit應該更新與添加/刪除行的網格?

謝謝。

編輯:我添加自定義功能,這是不必要的複雜的(注:這應該是一個客戶端只添加)

addfunc = function() { 
//Find dirty unsaved row if any and add to the grid before adding empty row 

       var dirtyRow = jQuery('#' + id).find('tr[editable]'); 
       var dirtyRowId = dirtyRow.attr('id'); 
       if (dirtyRow.length > 0) { 
        dirtyRow.addClass('data-isDirty', true); 
        var rowData = jQuery('#' + id).jqGrid('getRowData', dirtyRowId); 
        jQuery('#' + id).jqGrid('addRowData', rowId, dirtyRowId); 
       //The row when added to the grid should not be editable but a normal row 

       dirtyRow.find('input').each(function() { 
         var text = jQuery(this).attr('value'); 
         jQuery(this).replaceWith(text); 
        }); 
       } 
       var rowId = Math.floor(Math.random()*1000) + 'add_new'; 
       jQuery('#' + id).jqGrid('addRowData', rowId, that.getEmptyRow(colModel), 'first'); 
       var firstRowId = jQuery('#' + id).jqGrid('getDataIDs')[0]; 

          //Add an empty editable row at the top 
       jQuery('#' + id).jqGrid('editRow', firstRowId); 
      } 

回答

1

如果使用虛擬 URL,那麼它不可能在HTTP POST請求上回答。您可以通過使用mtype: "GET"選項來解決問題。在這種情況下,你可以使用任何現有的服務器URL從同一網站類似"/"

.navGrid('#' + id + '-pager', 
    {addtext: 'Add Code Value', deltext: 'Delete Code Value', 
     edit:false,add:true,del:true,search:false, refresh:false}, 
    {mtype: "GET", closeAfterAdd: true, reloadAfterSubmit: true} /* Edit options */, 
    {mtype: "GET", closeAfterAdd: true, reloadAfterSubmit: true} /* Add options */, 
    {mtype: "GET", reloadAfterSubmit: true} /* Delete options */); 

由於editurl參數jqGrid的,你可以使用任何現有的URL像editurl: "/"

+0

嗯......還是沒有看到新行被添加。如果我想要將新行添加到客戶端而不更改被髮送到服務器,我需要做什麼? – Ramya

+0

此網址似乎演示瞭如何在本地添加行而不發佈到服務器,但我無法弄清楚必須設置什麼參數才能啓用此功能:http://www.trirand.com/blog/jqgrid/jqgrid.html – Ramya

+0

@Ramya:在本地添加新行非常簡單:您可以使用'addRowData'。看起來我不是你在你的問題中提出的問題。 – Oleg

相關問題