2011-12-07 33 views
1

我正在使用JQGrid並定義了「添加新」按鈕。JQGrid上的行取消事件

$(gridId).jqGrid('navButtonAdd', pagerId, { 
    caption: "Add Record", 
    buttonicon: "ui-icon-add", 
    onClickButton: function (id) { 
     var newId = -1; 
     $('#addButton').addClass('ui-state-disabled'); 
     var datarow = { Id: newId, 'Active': true, 'Location': '', 'LabCode': '', 'Crops': '', 'LabManager': '', 'MarkerChoice': '', 'AllowPlates': '', 'AllowTape': '' }; 
     var su = jQuery(gridId).jqGrid('addRowData', newId, datarow, "last"); 
     if (su) { 
      $(gridId).jqGrid('setSelection', newId); 
     } 
    }, 
    position: "last", 
    id: "addButton" 
}); 

正如您所看到的,當單擊該按鈕時,它會禁用,因此無法再次單擊該按鈕。我的問題是,當用戶點擊添加,然後點擊ESC鍵,我需要重新啓用添加按鈕:

$('#addButton').removeClass('ui-state-disabled'); 

但我不知道在哪裏做的?是否有一行取消選擇的事件或等價物可以使用?

回答

2

onSelectRow方法。您可以捕獲選定的行,如果它改變或是-1,您可以撥打removeClass()代碼。

var lastSel; 
jQuery("#gridid").jqGrid({ 
... 
    onSelectRow: function(id){ 
     if(id && id!==lastSel){ 
     ... 
     lastSel=id; 
     } 
    }, 
... 
}); 

編輯:陷阱ESC鍵:按ESC鍵時

/* could use window or a specific element if required */ 
$(window).keydown(function(e) { // or keyup, keypress 
     if (e.keyCode == '27') { // ESC 
      e.preventDefault(); 
      // do something with the grid 
     } 
}); 
+0

Unfortuantely onSelectRow不火。 –

+0

誤讀你的問題,沒有意識到你只想在按ESC時做些事情。查看我的答案編輯以獲取可能的解決方案 – Terry

+0

我在閱讀你的答案之前發現了同樣的東西。似乎有點黑客,但它的工作原理!謝謝! –