1

当我单击添加按钮时,你们知道如何防止打开表单吗?

也许使用 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);

顺便说一句,有一种方法可以调用 jqgrid 的 alertmod 并向其添加自定义消息吗?

谢谢!

4

2 回答 2

4

我不明白你为什么不只是从导航栏中删除“添加”按钮。要创建导航栏,您显式调用navGridjqGrid 的方法

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();
    }
}});

In this example will be allowed to click "Add" button only if a row is selected. 您将看到一个带有文本的消息框,例如“请选择行”(在 grid.locale-en.js 或您使用的其他本​​地化文件中定义的$.jgrid.nav.alerttext文本。您可以将此代码片段放在主网格中。

拒绝“添加”操作的代码可以更简单,我只是在这里复制了一个使用jqGrid本身的代码片段。您可以改为显示自定义错误消息。

于 2010-05-15T21:56:57.607 回答
0

酷,tks奥列格!顺便说一句,我带来了另一个(但不是漂亮的)解决方案:

** 这是表演后的动作。如果我们在主网格(#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);

于 2010-05-31T13:39:08.507 回答