2011-01-26 62 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 
      } 
     }    
    }); 
});