2013-03-28 34 views
0

我想發送行數據進行更新,但是當jqgrid創建數據類型設置爲「本地」。我試圖在onSubmiClick中設置dataType:「json」,並想發送行數據(要發佈到REST方法的數據)。這是我的JqGrid代碼塊。任何幫助表示讚賞。jqgrid發送數據到服務器,數據類型是本地的

var editSettings = { 
recreateForm:true, 
jqModal:false, 
reloadAfterSubmit:true, 
closeOnEscape:true, 
closeAfterEdit:true, 
addCaption: "Edit Scripts", 
onclickSubmit: function(params,postdata) { 
    $.ajax({ 
    type : "POST", 
    url : "/fnol-maintenance/reports/update", 
    contentType : "application/json; charset=utf-8", 
    data : { 
     jqGridData : postdata //I'm trying to figure out how to pass the row data being edited using jQgrid Form Edit. 
     }, 
    dataType : "json", 
    asynch : false 
    }); 
    return{}; 
}}; 

myGrid = $("#mygrid").jqGrid({ 
caption: "FNOL Maintenance Report", 
datatype: "local", 
colNames: myColNames, 
colModel: myColModel, 
pager: '#mypager', 
//rowNum: 10000, 
rowList: [10, 20, 50, 100], 
viewrecords: true, 
autowidth: true, 
gridview: true, 
ignorecase: true, 
altRows: true, 
altclass: 'myAltRowClass', 
height: gridHeight, //commented to use browser vertical scrollbar 
//height: "100%", //un-commented to use browser vertical scrollbar 
loadtext: "Loading data...", 
//forceFit: true 
//headertitles: true, 
footerrow: true, 
userDataOnFooter: true, 
editUrl: '/fnol-maintenance/reports/update' 
}); 
myGrid.jqGrid('navGrid','#mypager',{edit:true,add:false,del:false,search:false}, editSettings); 
jQuery("#mygrid").jqGrid('setCaption', (myjsongrid.reportTitle==""?'Maintenance Report':myjsongrid.reportTitle)); 
myGrid.setGridParam({datatype: "local"}); 
myGrid.setGridParam({data: mydata}).trigger("reloadGrid"); 
//jQuery("#mygrid").jqGrid('navGrid','#mypager',{del:false,add:false,edit:true,search:false}); 
//alert("after ajax"); 
+0

如何在'onclickSubmit()'調用ajax之前調用'myGrid.setGridParam({datatype:「json」});' 然後使用您的ajax調用。 – 2013-03-28 05:12:10

回答

2

您發佈的代碼非常奇怪。首先你使用未定義的變量editSettings。該值將在稍後分配給editSettings。人們不應該懷疑回調onclickSubmit將不會被調用。

以同樣的方式,我沒有看到你在哪裏定義myGridmydata等。它是真正的代碼,你使用?

通過我看是沒有意義的,而無需指定data參數創建的jqGrid,然後用setGridParam設置datatype爲「本地」(它已經「本地」),改變data參數和重裝格的方式。在創建網格時,可以直接使用data: mydata參數。

我不覺得在onclickSubmit裏使用$.ajax手動發佈數據到服務器是有意義的,因爲jqGrid在內部做同樣的事情。如果您需要一些自定義序列化的數據將被髮送到服務器,您可以使用serializeEditData回調。如果您只需設置$.ajax的其他選項(如contentType),則可以使用ajaxEditOptions選項。

+0

EditSettings在網格上方定義,但是當我發佈這個問題時,我已經將它們按錯誤順序排列。我的錯。 – Arvind 2013-03-28 14:00:10

+0

我已經設置數據類型爲本地當我定義網格以及在重新加載網格之前使用 – Arvind 2013-03-28 14:02:27

+0

@Arvind:你能改正你發佈的代碼嗎?你是否理解我關於使用'ajaxEditOptions'和可選'serializeEditData'的建議? – Oleg 2013-03-28 14:12:17