2014-04-09 101 views
0

我在尋呼機中有兩個按鈕,一個用於添加新記錄。看到下面的代碼:JqGrid:如何刷新afterSubmit中的網格?

$(grid_selector).jqGrid('navGrid', pager_selector, 
    { 
     edit: false, 
     add: true, 
     addicon : 'icon-plus-sign purple', 
     del: true, 
     delicon : 'icon-trash red', 
     search: false, 
     refresh: false, 
     view: false, 
    }, 
    null, //no need for edit 
    { 
     //new record form 
     url: "/add", 
     ... 
     afterSubmit : function(response, postdata) { 

      // ??? how to refresh the grid 

     } 
    }, 
    ... 

} 

添加一條記錄後,我希望刷新網格。有人可以讓我知道如何做到這一點?

我正在使用本地數據進行測試。

問候。

回答

2

確保你在你的應用程序 使用的jqGrid的更新版本,如果所有其它參數都正確(刷新:真等),你可以用它來重新加載網格

$(grid_selector).trigger("reloadGrid"); 

請注意,這個條件太

由於數據類型已變爲本地(loadonce爲true),因此無法執行重裝。您需要在afterSubmit函數中手動重新加載網格以進行表單編輯。在觸發重載事件之前,您需要將數據類型設置爲json。

$(grid_selector).jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
1

表單編輯中使用的默認屬性是reloadAfterSubmit: true。這意味着jqGrid觸發器reloadGrid處理的是afterSubmit

您寫下了「我正在使用本地數據」。很難回答你的問題,因爲你沒有發佈更多完整的代碼。我試圖猜測你做了什麼。因爲jqGrid不支持本地編輯到現在,那麼我想你的問題存在,因爲你使用loadonce: true選項。如果使用該選項,則在第一次加載數據後,jqGrid將原始的datatype更改爲"local"。換句話說,在第一次加載數據之後,jqGrid「斷開」到服務器的連接(至url)。

因此您只需在jqGrid觸發器reloadGrid之前重置原始的datatype"json""xml")。對應的代碼將關於以下內容:

$(grid_selector).jqGrid("navGrid", pager_selector, 
    { 
     edit: false, 
     addicon : 'icon-plus-sign purple', 
     delicon : 'icon-trash red', 
     search: false, 
     beforeRefresh: function() { 
      $(this).jqGrid("setGridParam", { datatype: "json" }); 
     } 
    }, 
    {}, //no need for edit 
    { 
     //new record form 
     url: "/add", 
     ... 
     afterSubmit: function() { 
      $(this).jqGrid("setGridParam", { datatype: "json" }); 
     } 
    }, 
    ... 
} 

上面的代碼添加「刷新」按鈕,並使用相同beforeRefreshafterSubmit。按照「刷新」按鈕重新加載服務器中的數據。我個人發現這種按鈕在loadonce: true情況下實際存在。