В Inine редактировании jqgrid невозможно отменить предыдущее событие редактирования и переключиться на новое событие

Когда выполняется встроенное редактирование в строке jqgrid, это позволяет сделать, но снова щелкните другую строку, а затем не отменяет предыдущую строку, и обе останутся в режиме редактирования. Мне нужно, чтобы он был отменен последним, если пользователь щелкнул новую строку для редактирования, так как за один раз одна строка должна быть открыта для редактирования. (если пользователь нажимает на следующую строку для редактирования, последняя строка должна быть отменена, а новая строка должна открываться для редактирования).

Проблема здесь, он переключается на новую строку для редактирования, но кнопки «редактировать» и «отмена» последней строки остаются такими, какие они есть. Следовательно, одновременно пользователь может видеть две кнопки редактирования и отмены двух строк.

       $("#SamplesGrdList").jqGrid({
        url: '@Url.Action("ActionName", "Controller")/',
        datatype: "json",
        colNames: ['Category Name','ValueToChange','Edit'],
        colModel: [
            { name: 'CategoryName', index: 'CategoryName', sortable: true, sorttype: 'text', width: 140, classes: 'bStyle' },
            {
                name: 'ValueToChange', index: 'ValueToChange', width: 82, align: "right", editable: true, editrules: { number: true, required: true, custom: true, custom_func: Deductions }, formatter: 'currency',
                formatoptions: { decimalSeparator: ".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00', prefix: '$ ' },
                editoptions: {
                    style: 'width:70px;', dataEvents: [
                       {
                           type: 'blur',
                           fn: function (e) {
                               CalculateDeductions($(this).val());// SOme DB Operation

                           }
                       }
                    ]
                }
            },
            {
                name: 'act', index: 'act', width: 60, align: 'center', sortable: false, formatter: 'actions',
                formatoptions: {
                    keys: false,
                    delbutton: false,
                    onEdit: function (rowid) {
                    },
                    onSuccess: function (jqXHR) {
                        $("#SamplesGrdList").trigger('reloadGrid');
                        return true;
                    },
                    onError: function (rowid, jqXHR, textStatus) {

                    },
                    afterSave: function (rowid) {
                    },
                    afterRestore: function (rowid) {
                        $("#SamplesGrdList").trigger('reloadGrid');   
                    }
                }
            }
        ],
        rowNum: 10, rowList: [10, 20, 30],
        sortname: 'CategoryName',
        shrinkToFit: true,
        sortable: true,
        viewrecords: true,
        sortorder: "desc",
        footerrow: true,
        width: '780',
        height: '100%',
        jsonReader:
            {
                root: 'List',
                page: 'Page',
                total: 'TotalPages',
                records: 'TotalCount',
                repeatitems: false,
                id: 'Id'
            },

        editurl: '@Url.Action("ActionName", "ControllerName")'
    }); 

Пожалуйста, объясните, как решить эту проблему, чтобы одновременно была доступна одна строка для редактирования/сохранения/отмены.

ПРИМЕЧАНИЕ. Версия jqgrid — Jquery.jqgrid-4.1.2.min.js.

Спасибо


person dsi    schedule 13.03.2015    source источник


Ответы (1)


Я думаю, что единственная проблема, которая у вас есть: использование очень старой версии jqGrid 4.1.2. Я рекомендую вам обновить до jqGrid 4.7 или бесплатная версия jqGrid 4.8.

Просто попробуйте, например, демонстрацию. Он использует formatter: "actions", который вам нужен. Вы можете убедиться, что он работает так, как вам нужно.

person Oleg    schedule 13.03.2015