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