jqgrid使用skip / take命令分页linq

时间:2012-03-05 15:09:07

标签: asp.net linq jqgrid linq-to-entities

有人可以告诉我,我想做什么是可能的(asp.net 4)

好的,我有一个名为CityBusinessObject的businesslogic对象。 它有一个名为GetCities()的公共方法 这使用EF和Linq做了很多魔法,并将城市对象列表返回到公共属性中。 我通过将数据源设置为属性将其链接到我的JQgrid,它的工作原理非常棒。 我也可以把它打到页面(一次10条记录)

但这是客户端,而且效率不高。

我更希望有一个名为GetCitiesbyPage的公共方法(int skip,int take),然后只要网格执行页面就会调用它。

我的问题是 1.我如何让网格调用我的GetCitiesbyPage方法,其值为skip和take 2.如何在不保存数据的情况下让网格始终了解所有其他页面。即skip(0).take(10)实际上只有10行,因此网格只“知道”大约10行,因此1页

1 个答案:

答案 0 :(得分:2)

如果将jqGrid与参数url: "Url.Action("GetCitiesbyPage")"datatype: 'json'一起使用,jqGrid的默认行为几乎与您想要的一样(请参阅the documentation)。 jqGrid发送到url个附加参数string sidx, string sord, int page, int rows。因此,您应将rows用作take参数,并将page-1用作skip。要为jqGrid提供有关总页数和总数或记录(项目)的信息,控制器操作返回的数据的默认格式应为

{
    "total": 2,
    "page": 1,
    "records": 12,
    "rows": [
        ... the 10 rows of data
    ]
}

你会在寻呼机中看到类似下面的内容

enter image description here

有关详细信息,请参阅the answer。在the answerthis one中,您可以下载the demo project,其中显示了如何使用EF实现服务器端分页。