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

ナビゲーションバーから「追加」ボタンを削除しない理由がわかりません。ナビゲーションバーを作成するに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のオプションを使用することを提案できますnavGridhttp://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();
    }
}});

この例では、行が選択されている場合にのみ[追加]ボタンをクリックできます。「行を選択してください」(grid.locale-en.jsまたは使用する他のローカリゼーションファイルの$.jgrid.nav.alerttext内部を定義するテキスト)のようなテキストを含むメッセージボックスが表示されます。このコードフラグメントをマスターグリッドに配置できます。

「追加」操作を拒否する場合のコードは簡単です。ここに、jqGrid自体を使用するコードフラグメントをコピーしました。代わりに、カスタムエラーメッセージを表示できます。

于 2010-05-15T21:56:57.607 に答える
0

クール、tksオレグ!!! ところで、私は別の(しかし美しくはない)解決策を思いついた:

** これは aftershowform アクションです。メイン グリッド (#gridap) で選択された行がない場合は、フォーム モーダルを jqmHide() で非表示にします。次に、ソリューションを使用してアラートキャップを表示します。


$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 に答える