2012-03-29 25 views
0

サーバーからデータをロードするjqgridを作成しました。グリッド内のデータを表示できますが、拡張して起動しようとすると、$.jgrid.delonclickSubmitが表示されます。実際のレコードID(私の場合は101,102)を得ることができない。それは1,2を返すのではなく、行インデックスidかもしれない。まあJSONリーダーにIDを指定実際のレコードIDを取得できません

JqGrid

jQuery("#eventGrid").jqGrid({ 
    url:"/eventAllInfo", 
    datatype: "json", 
    restful: true, 
    mtype: 'GET', 
    width:900, 

    colNames:['id','title', 'description'], 
    colModel:[ 
     {name:'e_info_id',index:'e_info_id', width:60, sorttype:"int",editable:true,editoptions:{size:10}}, 
     {name:'e_meta_title',index:'e_meta_title', width:90,editable:true,editoptions:{size:10}}, 
     {name:'e_meta_description',index:'e_meta_description', width:100,editable:true,editoptions:{size:10}},   
    ], 
    rowNum:10, rowList:[10,20,30], 
    jsonReader : { repeatitems: false }, 
    pager: '#pager',   
    caption: "Show Events" 
}); 

JSONレスポンス

{ 
    "success": true, 
    "message": "Records Retrieved Successfully -EventAllInfo", 
    "page": "1", 
    "total": 1, 
    "records": "2", 
    "rows": [ 
    { 
     "e_info_id": "101", 
     "e_meta_title": "Oracle Business Summit", 
     "e_meta_description": null, 
     "e_meta_img": null, 
     "e_meta_video": null, 

    }, 
    { 
     "e_info_id": "102", 
     "e_meta_title": "Expo 2014 - Environment", 
     "e_meta_description": "", 
     "e_meta_img": "", 
     "e_meta_video": "", 

    } 
    ] 
} 

レコードを削除するには私の問題を解決しましたが、私はレコードを編集するとき、私のPOSTデータ引数は

が含まれています
e_info_id: "101" 
e_meta_description: "" 
e_meta_title: "Oracle Business Summit" 
id: "101" 
oper: "edit" 

と私は編集

onclickSubmit: function (options, postdata) { 
     console.log(postdata); 
     console.log(postdata.id); //undefined 


     options.url = options.editurl +'/' + encodeURIComponent(postdata.id); 
    } 
+0

について 'onclickSubmit'について:前の質問の[私の答え](http://stackoverflow.com/a/9923417/315935)をよく読んでください。 'id'を保持する' postdata'のプロパティは 'id'という名前ではありません。あなたのケースでは 'eventGrid_id'になります。プロパティ名はグリッドの 'id'と' '_id" 'text:' gridId + "_id" 'から構成されます。 – Oleg

+0

質問に「jquery」または「javascript」タグを追加すると、コードはJavaScript固有の色でマークされます。 – Oleg

答えて

0

あなたがjsonReader: { repeatitems: false } jqGridを使用している場合、それはこのように呼ばROWIDとして使用する必要がありますどの値が分かりません。 rowidは、id属性の値で、グリッド内の要素は<tr>です。

  1. e_info_id列にkey: trueプロパティを定義するには:あなたは2つのオプションがあり、問題を解決するには

  2. jsonReaderidプロパティのデフォルト値はid: "id"あるjsonReaderid: "e_info_id"(クリスチャンの答えを参照)

を使用します。

idの値はユニークなである必要があります。たとえば、ページに2つのグリッドがあり、両方に整数IDの情報がある場合、競合が発生することがあります。この場合、idPrefixオプションを使用することができます。この場合、idという属性の値が<tr>の要素の場合は、idPrefix(原因の両方のページで異なるはずです)と「標準」idから構成されます。

2

のonclickSubmitがドキュメントhere見ているpostdata.idとしてそれにアクセスするか、それはここで、undefinedを返しますpostdata.e_info_idしようとしたとき、私はあなたがあなたのidプロパティ名を指定するべきだと思いますjsonReader。

jsonReader : { repeatitems: false, id: "e_info_id" } 
+0

私の編集 – Hunt

+0

+1をご覧ください。あなたの答えは絶対に正しいです。私はちょうど私の答えに追加情報を追加しました。 – Oleg

+0

@ハント:将来的にあなたの質問に対する回答を受けたい場合は、そのような回答も投票してください。あなたは[FAQ](http:// stackoverflow。com/faq#howtoask)非常に単純なルール: "**あなたの質問に対する新しい答えを見て、答えの左側にある上向きの矢印をクリックして、役に立つものに投票してください。典型的には、自分自身ですべての回答を投票する必要があります。他の質問に回答すると、同じページの他の訪問者に役立ちます。 – Oleg

関連する問題