jqgrideditmode

jqgrid does not fire when the ENTER key gets pressed


I need to trap when the user presses ENTER in edit mode and this code works every time any other key gets pressed but not ENTER.

Any ideas why? maybe there is an automatic setting that needs to be set to false?

 $(dispgrid).jqGrid({
            url: als.common.getServerPath() + 'WorkorderAjax/GetDispositionFields',
            datatype: 'local',
            mtype: 'POST',
            height: 292,
            width: 480,
            caption: 'Disposition Instructions',
            hidegrid: false,
            loadtext: 'Please wait,</br>loading disposition fields...',
            colModel: [
                { name: 'Description', label: 'Description', sortable: false, width: 120, align: 'left' },
                { name: 'Fraction', label: 'Split', sortable: false, width: 40, align: 'center' },
                {
                    name: 'Disposition', label: 'Disposition', sortable: false, align: 'left',
                    editable: true, edittype: 'select', classes: 'disposition_list'
                },
                { name: 'PickList', label: 'PickList', sortable: false, hidden: true },
                {
                    name: 'FreeDays', label: 'FreeDays', sortable: false,  editable: true 
                },
                { name: 'MaxFreeDays', label: 'MaxFreeDays',hidden: true }
            ],
            pgbuttons: false,
            pginput: false,
            rowNum: 999,                    
            loadComplete: function () {
                currentRowId = undefined;
                prevRowId = undefined;
                prevRowModified = false;
            },
            onSelectRow: function (rowId) {
                if (prevRowId !== undefined) {
                    if (prevRowModified) {

                        //validate free days here                    
                        var selRowId = $(dispgrid).jqGrid('getGridParam', 'selrow');
                        var freedays = $("#" + prevRowId + "_FreeDays", dispgrid).val();
                        var maxfreedays  = $(dispgrid).jqGrid('getCell', selRowId, 'MaxFreeDays');

                        if (parseInt(freedays) > parseInt(maxfreedays)) {
                            $(dispgrid).jqGrid('restoreRow', selRowId);

                            showErrorDialog("Free days can not be larger than " + maxfreedays);
                            $(dispgrid).resetSelection();
                            $(dispgrid).setSelection(prevRowId, false);
                            return true;
                        }

                        saveparameters = {
                            url: als.common.getServerPath() + 'WorkorderAjax/UpdateDispositionFields',
                            extraparam: {
                                folderno: wo,
                                fraction: prevRowId,
                                disposition: $('#' + prevRowId + '_Disposition', this).val(),
                                freedays: $('#' + prevRowId + '_FreeDays', this).val()
                            },
                            successfunc: function () {
                                $(this).trigger("reloadGrid");
                                prevRowModified = false;
                                $(this).restoreRow(prevRowId);
                                return true;
                            }
                        };

                        $(this).jqGrid('saveRow', prevRowId, saveparameters);
                    }
                    else {
                        $(this).restoreRow(prevRowId);
                    }
                }

                currentRowId = rowId;

                var rowData = $(this).jqGrid('getRowData', currentRowId);
                var unformatted = rowData.PickList;
                var formatted = '';
                var ar = unformatted.split(',');
                for (var i = 0; i < ar.length; i++) {
                    formatted += ar[i] + ':' + ar[i]
                    + (i < ar.length - 1 ? ';' : '');
                }
                $(this).setColProp('Disposition', { editoptions: { value: formatted } });

                saveparameters = {
                    url: als.common.getServerPath() + 'WorkorderAjax/UpdateDispositionFields',
                    extraparam: {
                        folderno: wo,
                        fraction: currentRowId,
                        disposition: $('#' + currentRowId + '_Disposition', this).val()
                    },
                    successfunc: function () {
                        $(this).trigger("reloadGrid");
                        prevRowModified = false;
                        return true;
                    },
                    keys: true
                };

                $(this).editRow(currentRowId, saveparameters);
                prevRowId = currentRowId;
            }
        }).closest('div.ui-jqgrid-view').children('div.ui-jqgrid-titlebar').css('text-align', 'center').
           children('span.ui-jqgrid-title').css('float', 'none');

        $(dispgrid).on('change', '', function () { prevRowModified = true; });

        $(dispgrid).on('keydown', '', function (e) {     
           //the  break point here gets hit every time unless the user presses ENTER key
          if (e.keyCode == 13) {                
          }
        });

Solution

  • keys:false in the saveparameters did the trick