2016-11-26 68 views
0

Jqgrid內聯編輯發送JSON數據。但內聯刪除發送FORMs data 。我需要使用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版本和叉子([free jqGrid](https://github.com/free-jqgrid/jqGrid),商業版本[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或版本<= 4.7的舊jqGrid)。 – Oleg

+0

@Oleg即時通訊使用舊的jqgrid版本4.4.4。它的免費版本(Trirand jqGrid) – user2838738

回答

0

jqGrid使用jQuery.ajax與服務器通信。要以JSON格式發送數據,必須做兩件事:

  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)是桌面上最流行的網絡瀏覽器(僅限Windows)。現在可以使用Chrome 54,Firefox 50,Microsoft Edge 38和Internet Explorer 11,Safari 10.您是否真的相信jqGrid 4.4.4能夠與現代Web瀏覽器一起使用?我強烈建議您更新至free jqGrid的當前版本(4.13.5)。

如果你還是要用的jqGrid 4.4.4,那麼你應該使用

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

一個必須設置的delGridRow選項在許多不同的plases depent上使用其他方法。問題是:人們不僅直接使用delGridRow方法,而且間接使用方法。例如,formatter: "actions"navGridinlineNav使用內聯編輯或表單編輯選項。您必須使用相應的深層選項來指定您的自定義選項delGridRow。免費jqGrid有jqGrid選項,它允許爲方法的所有間接調用指定通用選項。可以使用inlineEditing,formEditing,formDeleting,formViewing,searching來指定所有方法使用的默認選項。因此,你可以使用的jqGrid選項

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

之後,你可以只是刪除的formatter: "actions"formatoptions財產。如果您使用navGrid,那麼它在刪除時也會使用相同的選項。

你可以閱讀更多關於在the wiki article中指定選項的新方法。

順便說一句,你可能有內聯編輯的問題。您應該使用ajaxRowOptions選項和serializeRowData回調jqGrid在內聯編輯期間進行JSON編碼。免費的jqGrid支持相同的選項,並允許您在inlineEditing內另外使用ajaxSaveOptionsserializeSaveData