在JQGrid上取消选择行的事件

时间:2011-12-07 17:13:28

标签: jquery jquery-ui 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');

但我不知道该怎么办?是否有一行取消选择的事件或我可以使用的等效事件?

1 个答案:

答案 0 :(得分: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
        }
});