在MVC4中显示JQGrid的行内容



我当前正在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>

这会导致我的网格从页面中消失。

更新2:在我看来(如果我错了,请告诉我),执行上面的代码会重建jqgrid(就像构造函数一样),并且需要更多的代码才能工作。由于我的JQGrid已经创建并传递到视图中,所以我必须在控制器中设置onselectrow事件处理程序。有什么想法吗?

是的,这是可能的。您必须挂接行单击事件并使用它来填充表单。更具体地说,您必须挂接jqGrid 的onSelectRow事件

例如:您的网格具有ID JQGrid1

我们将在JavaScript代码中使用此ID来挂接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); } 
 });

最新更新