Предотвращение открытия формы при нажатии кнопки добавления - PullRequest
1 голос
/ 16 мая 2010

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

Может быть, используя 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 и добавить к нему собственное сообщение?

ТКС!

Ответы [ 2 ]

4 голосов
/ 16 мая 2010

Я не понимаю, почему вы не просто удалите кнопку «Добавить» из панели навигации. Чтобы создать панель навигации, вы явно вызываете 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. Вместо этого вы можете отобразить свое сообщение об ошибке.

0 голосов
/ 31 мая 2010

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

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

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

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