2011-12-07 128 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" 
}); 

ご覧のとおり、ボタンをクリックすると無効になるため、再度クリックすることはできません。

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

しかし、私はどこのことを行うにはわからない:私の問題は、ユーザーがクリックを追加したときに、私は追加ボタンを再度有効にする必要がESC当たるということですか?選択されていないイベントや同等のものが使用できますか?

答えて

2

onSelectRowメソッドがあります。選択した行をキャプチャすることができます。変更した行が-1の場合は、removeClass()コードを呼び出すことができます。

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

編集:トラップするには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

ESCキーを押したときUnfortuantely onSelectRowは発生しません。 –

+0

あなたの質問を誤解して、あなたがESCが押されたときに何かしたいと思ったことに気付かなかった。可能な解決策のために私の答えの編集を参照してください。 – Terry

+0

私はあなたの答えを読む直前に同じことを見つけました。ハックのようだが、うまくいく!ありがとうございました! –

関連する問題