【发布时间】:2013-11-25 16:56:24
【问题描述】:
我可以将网格与 ajax 调用绑定,但我无法弄清楚如何使分页工作。 我还设置了商店的页面大小.. 这是我尝试过的
<script type="text/javascript">
//Attach to onDOMReady event
Ext.onReady(onReady);
function onReady() {
//Define the model for Ext User Grid.
Ext.define('ExtUserGridModel', {
extend: 'Ext.data.Model',
id: 'UserId',
fields: [{ name: 'UserId', type: 'int' }, { name: 'UserName', type: 'string' },
{ name: 'EmailId', type: 'string' }, { name: 'IsAdmin', type: 'bool' },
{ name: 'UserFName', type: 'string' }, { name: 'UserLname', type: 'string' },
{ name: 'PhoneNo', type: 'string' }, { name: 'DateOfBirth', type: 'string'}]
});
//data geting method for Ext User Grid
var ExtUserStore = Ext.create('Ext.data.Store', {
autoLoad: true,
pageSize: 5,
remoteSort: true,
model: 'ExtUserGridModel',
proxy: {
type: 'ajax',
url: 'ExtUsersGrid.aspx/GetExtUsers',
headers: { 'Content-type': 'application/json' },
reader: {
type: 'json',
//totalProperty: 'd.totalCount',
root: 'd.userData'
},
// sends single sort as multi parameter
simpleSortMode: true
}
});
// Create Ext User Grid to display data from store
var grid = new Ext.grid.GridPanel({
store: ExtUserStore, // Our store
defaults: {
flex: 1
},
disableSelection: true,
loadMask: true,
title: 'Ext Users Grid',
columns: [ // Grid columns
{dataIndex: 'UserName', header: 'User Name' },
{ dataIndex: 'EmailId', header: 'EmailId', width: 250 },
{ dataIndex: 'IsAdmin', header: 'IsAdmin' },
{ dataIndex: 'UserFName', header: 'First Name' },
{ dataIndex: 'UserLname', header: 'Last Name' },
{ dataIndex: 'PhoneNo', header: 'User PhoneNo' },
{ dataIndex: 'DateOfBirth', header: 'Birth Date', flex: 1}],
renderTo: Ext.get('content'),
// paging bar on the bottom
bbar: Ext.create('Ext.PagingToolbar', {
store: ExtUserStore,
displayInfo: true,
displayMsg: 'Displaying Records {0} - {1} of {2}',
emptyMsg: "No Records to display"
})
});
服务器端代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)]
public static Object GetExtUsers(String page, String limit)
{
//String page, String limit
var extUserData = SampleDataManager.GetExtUsers();
var result = new DataSet
{
userData = extUserData.Select(x => new ExtUserData
{
UserName = x.UserName,
IsAdmin = ((Boolean)x.IsAdmin),
EmailId = x.EmailId,
UserFName = x.UserFName,
UserLname = x.UserLname,
PhoneNo = x.PhoneNo,
DateOfBirth = x.DateOfBirth
}),
totalCount = extUserData.Count()
};
return result;
}
}
}
class DataSet
{
public IQueryable<ExtUserData> userData { get; set; }
public Int32 totalCount { get; set; }
}
class ExtUserData
{
public Int32 UserId { get; set; }
public String UserName { get; set; }
public String EmailId { get; set; }
public Boolean IsAdmin { get; set; }
public String UserFName { get; set; }
public String UserLname { get; set; }
public String PhoneNo { get; set; }
public String DateOfBirth { get; set; }
}
我得到的 JSON 响应是
{"d":{"userData":[{"UserId":0,"UserName":"Rex","EmailId":"Vinaypratap.bhadauria@intsof.com","IsAdmin":true,"UserFName":"Vinay Pratap","UserLname":"Singh","PhoneNo":"8557989106","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Ramit","EmailId":"Ramit.gulati@intsof.com","IsAdmin":false,"UserFName":"Ramit","UserLname":"Gulati","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Haider","EmailId":"Haider.hussain@intsof.com","IsAdmin":false,"UserFName":"Haider","UserLname":"Hussain","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"BHupendra","EmailId":"Bhupendra.shukla@intsof.com","IsAdmin":false,"UserFName":"Bhupendra","UserLname":"Shukla","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Anirudh","EmailId":"anirudh.agarwal@intsof.com","IsAdmin":false,"UserFName":"Anirudh","UserLname":"Agarwal","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Sachin","EmailId":"Sachin.Singh@intsof.com","IsAdmin":false,"UserFName":"Sachin","UserLname":"Singh","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Akash","EmailId":"Akash.malhotr@intsof.com","IsAdmin":false,"UserFName":"Akash","UserLname":"malhotr","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"},{"UserId":0,"UserName":"Gautam","EmailId":"Gautam.bharadwaj@intsof.com","IsAdmin":false,"UserFName":"Gautam","UserLname":"Bharadwaj","PhoneNo":"1234567894","DateOfBirth":"03/29/1991"}],"totalCount":8}}
网格显示所有记录,页面告诉它显示没有记录 Ie:5
【问题讨论】:
-
描述“不工作”。你没有从服务器取回数据吗?没有回到您期望的日期范围?您需要详细说明问题究竟是什么。
-
@existdissolve 是的,我正在从服务器获取数据,并且网格正在正确绑定,只是我无法对其应用分页。
-
分页参数是否正确发送到服务器?您应该会看到一个页面参数、一个限制参数和一个开始参数。
-
还请记住,您在技术上负责提供分页结果。 Ext JS 所做的只是提供定义应该返回结果集的哪一部分的参数。服务器负责创建该结果集并返回它。因此,例如,如果您正在查询数据库,服务器端代码的工作就是将从 Ext JS 接收到的分页参数应用于查询,以便返回正确的结果集。
-
@existdissolve 是的,一切都很好,根据 ext.js(sencha) 的文档,他们要求将页面大小提供给商店,它会处理它,我做了很多研发之后,也可能是缺少一些脚本的情况。如果我以这种方式解决它,我会发布。