jqgrid将数据发送到服务器,数据类型为local

时间:2013-03-28 04:15:51

标签: jqgrid

我想发送要更新的行数据但是在创建jqgrid时,数据类型设置为“Local”。我正在尝试在onSubmiClick中设置dataType:“json”并希望发送行数据(要发布到REST方法的数据)。这是我的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");

1 个答案:

答案 0 :(得分:2)

您发布的代码非常奇怪。首先,您使用未定义的变量editSettings。该值稍后将分配给editSettings。不应该怀疑回调onclickSubmit不会被调用。

以同样的方式,我看不到您定义的位置myGridmydata等。您使用的是真实的代码吗?

顺便说一下,我认为在没有指定data参数的情况下创建jqGrid然后使用setGridParamdatatype设置为“local”(它已经是“本地”)是没有意义的,更改data参数并重新加载网格。在创建网格时,可以直接使用data: mydata参数。

我认为在$.ajax内使用onclickSubmit手动将数据发布到服务器没有任何意义,因为jqGrid在内部执行相同的操作。如果您需要一些将发送到服务器的数据的自定义序列化,您可以使用serializeEditData回调。如果您只需设置$.ajax的其他选项(例如contentType),则可以使用ajaxEditOptions选项。