首页 新闻 会员 周边 捐助

MVC 分页问题

0
悬赏园豆:50 [已解决问题] 解决于 2014-08-14 11:55

前台使用Extjs 后台用返回 json数据 返回数据过去 进行 分页 为什么只能显示加载完 点击下一页后就没有了数据。

 

 

后台代码

 1    public JsonResult select(int start, int limit)
 2         {
 3             
 4             var json = new
 5             {
 6                 results = db.tb_Emp.Count(),
 7                 rows =db.tb_Emp.OrderBy(x=>x.EmpID).Take(limit).Skip(start).Select(x=>new 
 8                 {
 9                     EmpID=x.EmpID
10                 })
11                 
12             };   
13             return Json(json, JsonRequestBehavior.AllowGet);

前台代码

Ext.define('MyData', {
extend: 'Ext.data.Model',
fields: [
{ name: 'EmpID', mapping: 'EmpID' },
{ name: 'EmpName', mapping: 'EmpName' },
{ name: 'EmpLoginPwd', mapping: 'EmpLoginPwd' },
{ name: 'EmpSex', mapping: 'EmpSex' },
{ name: 'EmpBirthday', dateFormat: "Y-m-dTH:i:s", mapping: 'EmpBirthday' },
{ name: 'EmpDept', mapping: 'EmpDept' },
{ name: 'EmpPhone', mapping: 'EmpPhone' },
{ name: 'EmpPhoneM', mapping: 'EmpPhoneM' },
{ name: 'EmpAddress', mapping: 'EmpAddress' }
]
});



//创建数据源 var store = Ext.create('Ext.data.Store', { model: 'MyData', pageSize: 2,//对应limit proxy: { type: 'ajax', url: '../Information/select', reader: { type: 'json', //root: 'root', root:'rows', totalProperty: 'results' } }, autoLoad: true }); //grid 里面的分页控件 bbar: [{ xtype: 'pagingtoolbar', store: store, displayMsg: '显示 {0} - {1} 条,共计 {2} 条', emptyMsg: "没有数据", beforePageText: "当前页", afterPageText: "共{0}页", displayInfo: true, //pagesize:5 }],
Yamax的主页 Yamax | 初学一级 | 园豆:141
提问于:2014-08-14 11:12
< >
分享
最佳答案
1

对于这种前后台的问题。调错的第一原则是找出是哪一边的错。客户端,还是服务器。

1、你可以直接将URL直接打在浏览器地址栏上,看看返回什么样的结果。

类似http://www.yoursite.com/information/select?start=2&limit=10这样,看看是不是你想要的结果。

2、掌握WEB开发调试技巧,有个键你需要知道,F12,你可以查看客户端发出的以及服务端返回的数据。

收获园豆:50
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-08-14 11:28

服务器问题。。点了下一页时候 他数据就没了.. 但是不知道怎么去解决。

Yamax | 园豆:141 (初学一级) | 2014-08-14 11:30

第一次加载时候 后台json 里面 rows 结果视图是 

- 结果视图 展开“结果视图”时将枚举 IEnumerable 里面是有数据 但是当点下一页时候  里面的Empty 就显示

Empty "枚举未生成任何结果" string了0.0

Yamax | 园豆:141 (初学一级) | 2014-08-14 11:33

@Yamax: 可以通过SQL SERVER Profile跟踪EF或是LINQ TO SQL 发出的SQL查询语句,看看是哪儿出问题了,另外,你确认数据是够两页的吧。

或者通过LOG也可以将DataContext发出的SQL查询语句写在文本文件LOG中的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-14 11:36

@爱编程的大叔: 

是这个么。。但是我看不出来。。

第一条 json加载时候是

{ results = 8, rows = {SELECT [Project1].[C1] AS [C1], [Project1].[EmpID] AS [EmpID]FROM ( SELECT [Project1].[EmpID] AS [EmpID], [Project1].[C1] AS [C1], row_number() OVER (ORDER BY [Project1].[EmpID] ASC) AS [row_number]    FROM ( SELECT TOP (2)         [Extent1].[EmpID] AS [EmpID],         1 AS [C1]        FROM [dbo].[tb_Emp] AS [Extent1]        ORDER BY [Extent1].[EmpID] ASC    )  AS [Project1])  AS [Project1]WHERE [Project1].[row_number] > 2ORDER BY [Project1].[EmpID] ASC} }
点击后。
{ results = 8, rows = {SELECT [Project1].[C1] AS [C1], [Project1].[EmpID] AS [EmpID]FROM ( SELECT [Project1].[EmpID] AS [EmpID], [Project1].[C1] AS [C1], row_number() OVER (ORDER BY [Project1].[EmpID] ASC) AS [row_number] FROM ( SELECT TOP (2) [Extent1].[EmpID] AS [EmpID], 1 AS [C1] FROM [dbo].[tb_Emp] AS [Extent1] ORDER BY [Extent1].[EmpID] ASC ) AS [Project1]) AS [Project1]WHERE [Project1].[row_number] > 0ORDER BY [Project1].[EmpID] ASC} }
Yamax | 园豆:141 (初学一级) | 2014-08-14 11:40

@Yamax: 你把那条语句放到SQL 查询里面执行看看啊。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-14 11:41

@爱编程的大叔: 

Yamax | 园豆:141 (初学一级) | 2014-08-14 11:47

@爱编程的大叔:   

 

> 2   ORDER BY 就不行了  

> 0 ORDER BY 就可以了。。但 start  翻页后变了2后 我想 写成 除了 TOP 2之外的 后2条信息怎么写呢

- -

Yamax | 园豆:141 (初学一级) | 2014-08-14 11:50

@Yamax: 我好象看出来了,

你那个db.tb_Emp.OrderBy(x=>x.EmpID).Take(limit).Skip(start)

应该把Skip放前面,然后再Take

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-08-14 11:52

@爱编程的大叔: 额 试了 OK了 谢谢了... 新手刚学linq。。和extjs 搞了 1天 谢谢你。

Yamax | 园豆:141 (初学一级) | 2014-08-14 11:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册