Предотвращение открытия формы при нажатии кнопки добавления

Ребята, вы знали, как предотвратить открытие формы, когда я нажимаю кнопку добавления?

Может быть, используя beforeShowForm?

function(formid)
{
    if(jQuery('#gridap').getGridParam('selrow'))
    {

        idgridap=jQuery('#gridap').getGridParam('selrow');
        jQuery('#FK_numerocontrato_ap',formid).val(idgridap).attr('readonly','readonly');

    }
    else 
    {
         // I want to prevent the openning of the add form here and maybe show an alert using the "alertcap"

    }
}
CHECAROW;

$grid->setNavEvent('add','beforeShowForm',$checarowid);

Кстати, есть способ вызвать alertmod jqgrid и добавить к нему собственное сообщение?

спасибо!


person lala    schedule 15.05.2010    source источник


Ответы (2)


Я не понимаю, почему вы просто не убираете кнопку «Добавить» с панели навигации. Чтобы создать панель навигации, вы явно вызываете метод navGrid jqGrid.

jQuery("#grid_id").navGrid('#gridpager'); 

or

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. Вместо этого вы можете отобразить собственное сообщение об ошибке.

person Oleg    schedule 15.05.2010
comment
Здравствуйте Олег, Во-первых, у меня 2 сетки, мастер и слейв, когда я нажимаю подряд на мастер-сетку, информация о ней появляется на слейв-сетке. Когда я нажимаю кнопку добавления, я хочу проверить, есть ли в основной сетке выбранная строка. В подчиненной навигации у меня есть кнопка добавления, редактирования и обновления, я хочу предотвратить открытие формы добавления и показать пользовательское сообщение, если в основной сетке не выбрана строка. Спс Олег! ;-) - person lala; 17.05.2010
comment
эй, я создал пользовательскую кнопку навигации для выполнения действия в строке, по которой щелкнули. мне нужно такое же предупреждение, если я нажму на кнопку навигации, не нажимая на строку. сделать это, где я хочу добавить этот код? в 1_ ? - person CJ Ramki; 13.03.2014
comment
Я получил это из вашего другого ответа stackoverflow.com/a/17295728/2567813.. большое спасибо... - person CJ Ramki; 13.03.2014

Круто, спс Олег!!! Кстати, я пришел с другим (но не красивым) решением:

** Это действие aftershowform. Если у нас нет выбранной строки в основной сетке (#gridap), мы скрываем модальную форму с помощью jqmHide(). Затем я использую ваше решение, чтобы показать файл alertcap.


$closeform = <<< CLOSEF
function(formid)
{
    if(!jQuery('#gridap').getGridParam('selrow'))
    {
        $('#editmodgridbal').jqmHide();
        viewModal('#alertmod', { gbox: '#gbox_', jqm: true });
    }
}
CLOSEF;

$grid->setNavEvent('add','afterShowForm',$closeform);

person lala    schedule 31.05.2010