2011-05-19 45 views
2

我爲我的網格定義了內嵌編輯,它包含一些複選框列,並且它工作正常。
我將'navGrid'選項設置爲edit: true,我得到一個漂亮的鉛筆圖標,當我按下它時打開一個表單。
是 - 我定義列的值屬性,像這樣的問題:value: 'true:false',其用於在線編輯(所生成的輸入元件:
<input type="checkbox" disabled="disabled" offval="no" value="false">)工作正常,
但在形式編輯模式中,將所生成的輸入是:jqgrid複選框column-editoptions在表單編輯模式下被搞亂

<input id="isadministrator" class="FormElement" type="checkbox" checked="" value="true:false" offval="false" name="isadministrator" role="checkbox"> 

這會導致將檢查值發佈到服務器,如'true:false'。
有什麼想法? 附上我的整個電網代碼:

$("#grid").jqGrid({ 
     url: 'SampleScriptService.asmx/GetGridData', 
     datatype: 'json', 
     ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
     serializeGridData: function (postData) { 
      //with ASP.Net services, all parameters must be set in the post request. 
      //so here we make sure that all the parameters that the web service expects are prensent. if not- we create them with null value. 
      if (!postData.username) { 
       postData.username = null; 
      } 
      if (!postData.fullname) { 
       postData.fullname = null; 
      } 

      if (!postData.isadministrator) { 
       postData.isadministrator = null; 
      } 
      return JSON.stringify(postData); 
     }, 
     mtype: "POST", 
     jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", records: "d.records", total: "d.total" }, 
     colNames: ['Username', 'Full Name', 'Administrator?', 'Password'], 
     colModel: [ 
      { name: 'username', key: true, index: 'username', jsonmap: 'Username', 
       editable:false , edittype:'text' 
      }, 
      { name: 'fullname', index: 'fullname', /* width: 90,*/ 
       editable:true, edittype:'text', 
       jsonmap: 'FullName' }, 
      { name: 'isadministrator', index: 'isadministrator', formatter: 'checkbox', sortable: false, 
       editable: true, edittype: 'checkbox', editoptions: { value: 'true:false' }, 
       stype: 'select', searchoptions: { value: 'none:All;true:Yes;false:No' } 
       /*, width: 80*/, jsonmap: 'IsAdministrator' }, 
      { name: 'password', index: 'password' 
       /*, width: 150*/, 
       editable: true, edittype: 'password', 
       formatter: function (cellvalue, options, rowObject) { 
        //never display anything in the password column 
        return ''; 
       }, 
       jsonmap: 'Password', search: false } 
      ], 
     rowNum: 2, 
     pager: '#pager', 
     viewrecords: true, 
     sortname: 'username', 
     caption: "Users Management", 
     onSelectRow: function (id) { 
      if (id && id !== currentlyEditedRowId) { 
       jQuery('#grid').restoreRow(currentlyEditedRowId); 
       currentlyEditedRowId = id; 
      } 
      jQuery('#grid').editRow(currentlyEditedRowId, true); 
     }, 
     editurl: "SampleScriptService.asmx/UpdateUser" 
    }).jqGrid('navGrid', "#pager", { edit: true, add: true, del: false, search: false }) 
     //add toolbar searching 
    .jqGrid('filterToolbar', {}); 

回答

0

@Dizzy布萊恩高提出了一個建議這是一個非常合理的解決方法。
因爲我不想放棄複選框,所以我最終只在服務器端實現JQgridParseBool()方法,該方法處理髮送的錯誤值。
是的,這是相當醜陋的,但我找不到任何其他方式。

0

不回答你的問題,真的,但一種變通方法,

我也正在和複選框發送1問題:檢查時0作爲值。

相反,我恢復到使用下拉菜單和工作確定:

{ 
      name:'active_mdt', 
      index:'active_mdt', 
      width:20, 
      align:"left", 
      sortable:true, 
      editable:true, 
      edittype:"select", 
      editoptions: {value:{'1':'Active','0':'Hidden'}}, 
      search:true,// 
      stype:'select', 
      searchoptions:{value:{'':'All','1':'Active','0':'Hidden'}} 
     }], search : { 
      caption: "Search...", 
      Find: "Find", 
      Reset: "Reset", 
      matchText: " match", 
      rulesText: " rules" 
     }, 
相關問題