Я не понимаю, почему вы не просто удалите кнопку «Добавить» из панели навигации. Чтобы создать панель навигации, вы явно вызываете navGrid
метод jqGrid
jQuery("#grid_id").navGrid('#gridpager');
или
jQuery("#grid_id").jqGrid('navGrid', '#gridpager');
но navGrid
имеет дополнительные параметры (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator). Так что, если вы используете
jQuery("#grid_id").navGrid('#gridpager', {add: false});
у вас не будет кнопки «Добавить».
Если вам нужна кнопка «Добавить», объясните, пожалуйста, ситуацию более четко. Кстати, способом, описанным в http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_buttons, вы можете добавить пользовательскую кнопку с полным контролем со своей стороны. Имя значка вы можете найти на странице http://jqueryui.com/themeroller/, если навести курсор на значок в области «Значки каркаса» в нижней части страницы. Пользовательская кнопка может иметь тот же значок, что и кнопка «Добавить». Это может решить вашу проблему?
ОБНОВЛЕНО : Теперь после вашего комментария я понимаю вашу проблему. Я могу предложить использовать addfunc
параметр navGrid
(см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator&s[]=navgrid)., поэтому код может выглядеть следующим образом:
var grid = jQuery("#grid_id").navGrid('#gridpager', {addfunc: function() {
var sel_id = grid.getGridParam('selrow');
if (sel_id) {
grid.editGridRow("new", pAddOption);
} else {
viewModal("#alertmod", { gbox: "#gbox_" + grid_id, jqm: true });
jQuery("#jqg_alrt").focus();
}
}});
В этом примере будет разрешено нажимать кнопку «Добавить» только в том случае, если выбрана строка. Вы увидите окно сообщения с текстом «Пожалуйста, выберите строку» (текст, который определяет $.jgrid.nav.alerttext
внутри grid.locale-en.js или другого используемого вами файла локализации). Вы можете разместить этот фрагмент кода в вашей основной сетке.
Код в случае отказа от операции «Добавить» может быть проще, я просто скопировал здесь фрагмент кода, который использует сам jqGrid. Вместо этого вы можете отобразить свое сообщение об ошибке.