2010-09-30 101 views
2

HI, 我使用afterSaveCell將觸發如果我們修改了單元格,然後得到它火災。Jgrid保存細胞點擊

我的情況是,我在做批量更新對保存變化按鈕數據庫。但是當用戶編輯單元格併到達另一個單元格時,我將修改記錄在數組中。

但是,如果用戶編輯該單元格,然後點擊保存更改按鈕細胞焦點不會迷路(不過在編輯模式下)和afterSaveCell不會被解僱。

有沒有什麼辦法來觸發保存細胞上buttojn點擊使afterSaveCell得到火災。

請幫助.. 謝謝..

回答

3

你可以調用saveCell方法。該方法具有iRowiCol作爲參數。要知道當前可編輯單元格的這些參數,您可以將afterEditCell添加到網格中。所以,你的iRowiCol最後的值保存的jqGrid的變量外,你叫saveCell與這些參數上點擊事件中使用有內「保存更改」按鈕。

+0

感謝它的工作非常好... – Shivi 2010-09-30 12:58:34

+0

好..我會記住..謝謝 – Shivi 2010-09-30 14:52:33

0
// This worked Perfectly fine for me, hope will work for you as well. 
var selectedCellId; 
    var $gridTableObj = $('#jqGridTable'); 
    $gridTableObj.jqGrid({ 
     datatype : "jsonstring", 
     datastr : gridJSON, 
     height : ($(window).height() - 110), 
     width : ($(window).width() - 80), 
     gridview : true, 
     loadonce : false, 
     colNames : columnNames, 
     colModel : columnModel, 
     rowNum : gridJSON.length, 
     viewrecords : true, 
     subGrid : false, 
     autoheight : true, 
     autowidth : false, 
     shrinkToFit : true, 
     cellsubmit : 'clientArray', 
     cellEdit : true, 
     jsonReader : { 
      root : "rows", 
      repeatitems : false 
     }, 
     onCellSelect : function(id, cellidx, cellvalue) { // use this event to capture edited cellID 
      selectedCellId = cellidx; // save the cellId to a variable 
     }, 
     loadComplete : function(data) { 
      jQuery("tr.jqgrow:odd").addClass("oddRow"); 
      jQuery("tr.jqgrow:even").addClass("evenRow"); 
     } 
    }); 

//附加點擊事件jqgrid「saveCell」來保存單元格。

var gridCellWasClicked = false; 
window.parent.document.body.onclick = saveEditedCell; // attach to parent window if any 
document.body.onclick = saveEditedCell; // attach to current document. 
function saveEditedCell(evt) { 
    var target = $(evt.target); 
    var isCellClicked = $gridTableObj.find(target).length; // check if click is inside jqgrid 
    if(gridCellWasClicked && !isCellClicked) // check if a valid click 
     { 
     var rowid = $gridTableObj.jqGrid('getGridParam', 'selrow'); 
    $gridTableObj.jqGrid("saveCell", rowid, selectedCellId); 
    gridCellWasClicked = false; 
    } 
    if(isCellClicked){ 
     gridCellWasClicked = true; // flat to check if there is a cell been edited. 
    } 
};