Установите параметры редактирования jqGrid через setGridParam () - PullRequest
4 голосов
/ 14 февраля 2011

Мне нужно установить некоторые обработчики событий для событий редактирования jqGrid после инициализации сетки.А именно, мне нужно обработать событие редактирования beforeShowForm.Я пробовал это, используя setGridParam, но, похоже, он ничего не делает.

$('#mygrid').jqGrid('setGridParam', {
    edit: {
        beforeShowForm: function(formid) {
            // handle event
        }
    }
});

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

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

Изменить параметры редактируемых событий не так просто, поскольку параметры сохраняются во внутренней переменной функции navGrid.Таким образом, вы должны привязать событие click к кнопке «Edit» и связать новое событие, которое вызывает метод editGridRow , со всеми новыми необходимыми параметрами.Новые параметры могут включать обработчик событий, такой как beforeShowForm .

. Соответствующий код может быть следующим:

var grid=$("#list");      // your jqGrid (the <table> element)
var grid_id = grid[0].id; // id of the <table> element like "list"
$("#edit_"+grid_id).unbind('click'); // unbind original 'click' handle
$("#edit_"+grid_id).click(function() {
    if (!$(this).hasClass('ui-state-disabled')) {
        var sr = grid[0].p.selrow;  // get id of selected row
        if (sr) {
            grid.jqGrid("editGridRow",sr,
                        { // here you should place all Edit parameters
                            beforeShowForm: function(formid) {
                                alert("In beforeShowForm()");
                            }
                        });
        } else {
            // display error message
            $.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+grid_id,jqm:true});
            $("#jqg_alrt").focus();
        }
    }
    return false;
});

ОБНОВЛЕНО : если вывызовите где-нибудь editGridRow метод напрямую и не можете изменить код, который вы можете сделать, следуя

var grid=$("#list");      // your jqGrid (the <table> element)
var orgEditGridRow = grid.jqGrid.editGridRow; // save original function
$.jgrid.extend ({editGridRow : function(rowid, p){
    $.extend(p,
             { // modify some parameters of editGridRow
                 beforeShowForm: function(formid) {
                     alert("In new beforeShowForm()");
                 }
             });
    orgEditGridRow.call (this,rowid, p);
}});
0 голосов
/ 12 октября 2011

Я знаю, что это немного поздно, но я столкнулся с той же проблемой.Посмотрев на источник jqGrid, вот что я сделал:

$.extend($.jgrid.edit, { beforeShowForm: function (frmmgr) {
    alert('insert code here');
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...