2011-01-26 97 views
6

我使用的jqGrid與下列方式極大的更迭:在jqGrid的敲定編輯

  1. 將數據從服務器加載JSON
  2. 用戶做內聯編輯
  3. 當保存按鈕點擊所有數據序列化使用:

    var data = $(「#mygrid」)。getRowData();

    var datajson = JSON.stringify(data);

這個問題的問題是,如果用戶沒有按下回車或從編輯的單元格移開,我將在我的json-data中獲取輸入元素。有沒有什麼辦法可以結束編輯模式我jqgrid?

回答

5

您可以使用saveRow來保存數據。

要使用saveRow您必須知道當前可編輯行的行ID。例如,您可以將當前編輯的rowid保存到一個變量中(在調用editRow之前)並使用該值調用saveRow方法。

更新:請參閱the demo。首先選擇一些行,修改值,然後點擊「保存當前編輯行」按鈕。您會看到這些更改將會保存。

+0

對不起,不這樣做。 saveRow調用保存行的方法,但單元仍處於編輯模式。 – Bebben 2011-01-26 17:44:23

0

我已經通過觸發「的keydown」解決它元素ENTER事件:

editoptions: { 
        dataInit: function(elem) { 
         $(elem).datetimepicker({ 
          dateFormat: "yy-mm-dd", 
          onClose: function(datetimeText, datepickerInstance) { 
           $(elem).trigger($.Event("keydown", { keyCode: $.ui.keyCode.ENTER })) 
          } 
         }); 
        } 
       } 
0

我使用遠程提交的針對每個小區併爲我所用「CONTENTEDITABLE」 DIV細胞編輯器(多行文字),我想用ctrl-enter完成單元格編輯。

(基於奧列格的答案,How to close cell-editor?http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

$(document).ready(function() { 
    var grid,currentCell; 
    $(".jqGrid_wrapper").on("keydown","div[contenteditable]",function (e) { 
     if (e.ctrlKey && e.keyCode == 13) 
     { 
      grid.jqGrid("saveCell",currentCell.iRow,currentCell.iCol); 
      return false; 
     } 

     return true; 
    }); 
    grid=$("#table_list_2"); 
    grid.jqGrid({ 
     url: ... 
     cellEdit: true, 
     cellsubmit: 'remote', 
     cellurl: '..',  

     beforeEditCell: function(rowid, cellname, value, iRow, iCol) { 
      currentCell={ 
        rowid:rowid, cellname:cellname, value:value, iRow:iRow, iCol:iCol 
      } 
     }    
    }); 
});