0

現在、ASP MVC4 Razorview ページで JQGrid を使用しています。私のページの構造は

<body onload="TimeStamp();">
    <h2>Events as of <div id="timestampDiv"></div></h2>

    <div>
        @Html.Trirand().JQGrid(Model.EventsGrid, "JQGrid1")
    </div>
</body>

私がしたいのは、JQGrid で行がクリックされたときに、レコードの個々の要素をページに表示することです。イベントをクリックすると、フォームの残りの部分に特定のイベント情報が表示される Windows イベント ビューアーについて考えてみてください。グリッドとレコード情報が同じページにあることが理想的です。

私の質問: 私は JQuery と JQGrid を初めて使用します。どうすればこれを達成できますか?私が考えている方法で可能ですか、それとも私が望むものに似たものを得る別のより良い方法はありますか?

ありがとうございました。

更新:私は試しました:

    <script type="text/javascript">
        $(document).ready(function () {
            $("#JQGrid1").jqGrid({
                onSelectRow: function (id) {
                    // using id here to get details from server and display them
                    jQuery('#appDiv').text("test");
                }
            });
        });
    </script>

これにより、グリッドがページから消えます。

UPDATE2:上記のコードを実行すると(コンストラクターのように)jqgridが再構築され、機能するにはさらにコードが必要になるようです(間違っている場合は教えてください)。私の JQGrid は既に作成され、ビューに渡されているため、コントローラーで onselectrow イベント ハンドラーをセットアップする必要があります。何か案は?

4

1 に答える 1

1

はい、可能です。行クリック イベントをフックし、それを使用してフォームに入力する必要があります。具体的にはonSelectRow、jqGrid のイベントをフックする必要があります。

例: グリッドには ID がありますJQGrid1

この ID を JavaScript コードで使用してonSelectRow、次のようにイベントをフックします。

$("#JQGrid1").jqGrid({
   onSelectRow: function(id){ 
      // using id here to get details from server and display them
   }
});

アップデート:

サーバー側ラッパーを使用してすでにグリッドを作成しているため、上記のコードはグリッドを再初期化しようとします。次のコードを試して、役立つかどうかを確認してください。

$('#JQGrid1').jqGrid('setGridParam', 
 { 
    onSelectRow: function(id){ alert(id); } 
 });
于 2013-07-08T12:40:39.653 に答える