让jqGrid使用不同的页面来查看一行

时间:2010-08-18 13:02:31

标签: c# asp.net-mvc jqgrid

我正在写一个MVC网站并使用jqGrid。我设法让它工作,加载数据,通过不同的网页编辑和删除数据。

但是,我正在尝试弄清楚如何在单击视图时将其转到其他页面。目前,它将以模型形式显示行数据。我需要做的是让它去另一个页面,例如/客户/ ViewClient / 1

原因是客户端模型的信息比我在网格上显示的信息要多。因此,我需要进入一个单独的页面,以正确​​的方式显示所有信息。

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

我所做的是覆盖'onSelectRow'事件处理程序:

$("TABLE.jqGrid").jqGrid({
    url: '/Widgets/Get',
    datatype: 'json',
    mtype: 'GET',
    colNames: ['Id', 'Type', 'Name'],
    colModel: [
            { name: 'Id', index: 'Id', width: 50 },
            { name: 'Type', index: 'GameType', width: 100 },
            { name: 'Name', index: 'Name', width: 150 },
        ],
    pager: '#pager',
    rowNum: 25,
    rowList: [25, 50, 100],
    sortname: 'Name',
    viewrecords: true,
    altRows: true,
    gridview: true,
    height: 'auto',
    onSelectRow: function(id)
    {
        document.location.href = '/Widgets/Show/' + id;
    }
});

您可以使用<%= Url.Action("Whatever") %>

替换硬编码的网址

答案 1 :(得分:0)

如果你在使用jqGrid的视图中填充数据时改变一点逻辑,可能会更好。

您可以执行以下操作:

  • 在jqGrid的控制器中创建一个操作,该操作仅返回页面数据。您以JSON格式提供了数据。每页的行数和您将收到的页面作为MVC操作的参数。
  • 在您使用jqGrid的视图中,您应不填写任何数据。而不是将datatype参数设置为“json”,将jqGrid的url参数设置为提供分页数据的操作的URL。然后jqGrid将根据AJAX填充数据。用户单击下一页后,将向服务器发送新请求(到您控制器中的相应操作)。请求的页数将作为参数发送给操作。