2013-03-08 88 views
1

我有一個網頁與傳呼。我需要停止尋呼機加載另一個頁面,而在當前頁面上一行是在內聯編輯。所以當我創建網格時,我定義了onPaging函數jqGrid onPaging停止加載新的頁面,如果一行正在編輯

.... 
onPaging : function(){ 
     if (inEdit()>0){ 
      alert("Finish editing the current line"); 
      return 'stop'; 
     } 
    } 
.... 

函數inEdit只是計算有多少行可以編輯attr。

這是做的工作,但是後來當我在調用停止分頁時在編輯的行上調用restoreRow函數時,函數無法將行恢復到以前的狀態。

後來編輯:

出現該問題後,當這個函數被調用取消編輯

function cancelEdit(id){ 
    /*this line does nothing at all --> */ $('#list').jqGrid('restoreRow',id); 
    //The only way restore worked is by calling a grid reload but that is not really a solution 
    $('#list').trigger("reloadGrid", [{page:$('#list')[0].p.page}]); 
    $('#'+id+' [name=editButton]').show(); 
    $('#'+id+' [name=submitButton]').hide(); 
    $('#'+id+' [name=cancelButton]').hide(); 
} 

PS:編輯/保存/取消/刪除的自定義按鈕

+0

您是否正在從服務器向您的網格提供數據?在其他人正在編輯正在網格中顯示的數據的用例上? – Mark 2013-03-08 14:36:18

+0

現在,數據在本地加載,問題不在於其他人編輯數據,但在網格中,您必須一次只能編輯1行,並且只能通過保存或取消來停止編輯(確認)網格的所有其他功能,可能會中斷編輯,例如分頁必須停止,直到編輯完成。 – 2013-03-08 15:40:07

回答

0

我想如果你看看你在做什麼,但檢查奧列格的帖子 jqGrid - Inline edit - Detect dirty/changed cells 並使用該標誌來防止分頁,你將能夠完成你正在嘗試做的事情。

+0

我正是這樣做的,inEdit方法返回$('tr [editable = 1]')的數量。我的問題是不停止分頁停止,但後來當我打電話給restoreRow它不起作用。我將添加代碼,以便您看到我在走什麼路線 – 2013-03-08 17:37:14

+0

爲什麼要恢復並撤銷編輯? – Mark 2013-03-08 18:17:12

+0

用戶選擇...按取消按鈕時調用該方法。例如:按編輯按鈕 - >開始內聯編輯 - >按下一頁按鈕 - > onPaging功能停止下一頁加載並帶來警報 - >按取消按鈕 - >調用cancelEdit方法,試圖恢復行...但不工作了,如果你沒有按下分頁按鈕,而編輯取消按鈕完美地工作 – 2013-03-08 18:43:19

相關問題