有人可以告诉我,我想做什么是可能的(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页
答案 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
]
}
你会在寻呼机中看到类似下面的内容
有关详细信息,请参阅the answer。在the answer或this one中,您可以下载the demo project,其中显示了如何使用EF实现服务器端分页。