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

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

例如:您的网格有 IDJQGrid1

我们将在 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); } 
 });
于 2013-07-08T12:40:39.653 回答