2016-11-26 18 views
0

Jqgridインライン編集では、JSONデータが送信されます。しかし、インライン削除はFORMs data を送信します。確認ボックスがサーバーを尋ねるポップアップするので、私は、私は、グリッド内の削除ボタンを挿入する方法をHERESにJSONデータのみJqGridで削除中にJSONデータを送信するにはどうすればよいですか?

を使用してWebメソッドにデータを送信する必要が

colmodelMobは私のcolModel配列基本的に

colmodelMob.push(
       { 
        label: "Edit Actions", 
        name: "actions", 
        width: 100, 
        formatter: "actions", 
        formatoptions: { 
         keys: true, 
         editOptions: {}, 
         addOptions: {}, 
         delOptions: {} 
        }  
       }); 

そのです行削除のためのコンフォメーション。しかし、私は私のデータがJSONとして送信される必要がある必要はありません。それ以外の場合はwebmethodに当てません。

+0

ご使用のjqGridのバージョン、およびフリーのjqGrid(https://github.com/free-jqgrid/jqGrid)、商用のGuriddo jqGrid JS](http://guriddo.net/?page_id=103334)またはバージョン<= 4.7の古いjqGrid)。 – Oleg

+0

@Oleg im古いjqgridバージョン4.4.4を使用しています。その無料版(Trirand jqGrid) – user2838738

答えて

0

jqGridは、サーバーと通信するためにjQuery.ajaxを使用します。 JSON形式でデータを送信するには、次の2つを実行する必要があります。

  1. データをJSON形式でエンコードする必要があります。エンコードには通常JSON.stringifyが使用されます。
  2. contentTypeオプションを"application/json"または"application/json; charset=utf-8"値に設定する必要があります。リクエストにHTTPヘッダContentTypeが含まれています。ヘッダーは、サーバーに送信されたデータがJSON形式でエンコードされていることをサーバーに通知します。

オプションで、dataType: "json"オプションも使用できます。 Ajax呼び出しの応答にもJSONエンコードされたデータが含まれている必要がある場合は、このオプションを使用します。

jqGridの内部で上記の要件の実装について説明します。 jqGridは、多くの場所でjQuery.ajaxを使用できます。 jqGridのレトロ・バージョン4.4.4を使用します。それははるかに少ない可能性があり、非常に古いWebブラウザや古いjQueryなどの時代に開発されました。 jqGrid 4.4.4の公開日に、Chrome 24、Firefox 18、Internet Explorer 10、Safary 6.0.2を使用したことを思い出します。 IE8(とInternet Explorerはまったく)は、デスクトップ上で最も一般的なWebブラウザー(Windowsのみ)でした。 Chrome 54、Firefox 50、Microsoft Edge 38、Internet Explorer 11、Safari 10で動作します。jqGrid 4.4.4が現代のWebブラウザでうまく動作すると本当に信じていますか?現在のバージョン(4.13.5)のfree jqGridに更新することを強くお勧めします。

あなたはまだ、あなたが

{ 
    label: "Edit Actions", 
    name: "actions", 
    width: 100, 
    formatter: "actions", 
    formatoptions: { 
     keys: true, 
     delOptions: { 
      serializeDelData: function (postData) { 
       return JSON.stringify(postData); 
      }, 
      ajaxDelOptions: { 
       contentType: "application/json" 
      } 
     } 
    } 
} 

いずれかを使用する必要がありjqGrid 4.4.4を使用する必要がある場合は、使用その他の方法で、多くの異なるplasesのdepentにdelGridRowのオプションを設定する必要があります。問題は:delGridRowメソッドを直接的に使用するのではなく、間接的に使用することです。たとえば、formatter: "actions"navGridinlineNavは、インライン編集またはフォーム編集オプションを使用します。対応する深く配置されたオプションを使用して、カスタムオプションdelGridRowを指定する必要があります。無料のjqGridには、jqGridオプションがあり、メソッドのすべての間接呼び出しに共通のオプションを指定できます。 inlineEditing,formEditing,formDeleting,formViewing,searchingを使用して、すべての方法で使用されるデフォルトのオプションを指定することができます。したがって、あなたはちょうどformatter: "actions"formatoptionsプロパティを削除することができます。その後

inlineEditing: { 
    keys: true 
}, 
formDeleting: { 
    serializeDelData: function (postData) { 
     return JSON.stringify(postData); 
    }, 
    ajaxDelOptions: { 
     contentType: "application/json" 
    } 
} 

jqGridオプションを使用することができます。navGridを使用すると、削除時にも同じオプションが使用されます。

オプションを指定する新しい方法については、the wiki articleで詳しく読むことができます。

ところで、インライン編集には問題があります。おそらくajaxRowOptionsオプションとserializeRowDataコールバックのjqGridを使用して、インライン編集中にJSONエンコードを行う必要があります。無料のjqGridは同じオプションをサポートしており、とserializeSaveDatainlineEditingの中に追加して使用することができます。

関連する問題