0

更新する行データを送信したいのですが、jqgrid が作成されたときにデータ型が「ローカル」に設定されました。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");
4

1 に答える 1

2

あなたが投稿したコードは非常に奇妙です。まず、 undefined variable を使用しますeditSettings。値は後で割り当てられeditSettingsます。コールバックonclickSubmitが呼び出されないことに驚くべきではありません。

myGrid同じように、どこで を定義したかわかりませんmydata。使用するのは実際のコードですか?

dataちなみに、パラメータを指定せずにjqGridを作成してから、「ローカル」setGridParamに設定datatypeし(すでに「ローカル」でした)、dataパラメータを変更してグリッドをリロードするのは意味がありません。data: mydataグリッドの作成中にパラメーターを直接使用することができます。

jqGridは内部で同じことを行うため、データを手動でサーバーに投稿するため$.ajaxに内部で使用する意味はありません。onclickSubmitサーバーに送信されるデータのカスタム シリアル化が必要な場合は、serializeEditDataコールバックを使用できます。$.ajax(のようなcontentType)いくつかの追加オプションを設定するだけでよい場合は、 ajaxEditOptionsオプションを使用できます。

于 2013-03-28T07:41:07.500 に答える