extjs5.0分页问题 本帖最后由 shenshengzhiwen 于 2014-11-11 17:47:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 store .load({ params: { start: 0, limit: 50} }); var resultData = data.result; store .loadRawData(eval(resultData));你的data哪里来的?如果是ajax加载的要放到success回调中进行加载显示limit指定的数据要你数据库依据传递的limit参数进行返回需要的数据,ext是不按照limit进行控制的,要你服务器端控制 这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。 我省去了前面的dwr数据调用,所以你可以把data理解为传送过来的数据:[{executeTime: "Thu Jul 07 13:31:19 CST 2011",sqlContent: "SELECTT.SERV_PROV_CODE,T.STRING_KEY",parameters: "",spendTime: "2.125",recordNumber: "0" } ] 这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。你直接配置ext的store url为你的动态页地址,返回的数据需要包含和你配置一样的数据模式。。少了总数据量是分页不了的按照你的配置,你返回动态页的数据结构应该类似{totalCount:10000,rows:[{...},{...}...]}这种数据结构,rows只包含需要的数据直接加载另外一个地址返回的数据,如你的dwr数据,应该使用Ext.data.proxy.Direct数据源,而不是ajax,可以看这个:Ext4 Ext.data.proxy.Direct directFn示例或者使用examples\ux\data\PagingMemoryProxy.js这个插件来对客户端数据进行分页。 这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。你直接配置ext的store url为你的动态页地址,返回的数据需要包含和你配置一样的数据模式。。少了总数据量是分页不了的按照你的配置,你返回动态页的数据结构应该类似{totalCount:10000,rows:[{...},{...}...]}这种数据结构,rows只包含需要的数据直接加载另外一个地址返回的数据,如你的dwr数据,应该使用Ext.data.proxy.Direct数据源,而不是ajax,可以看这个:Ext4 Ext.data.proxy.Direct directFn示例或者使用examples\ux\data\PagingMemoryProxy.js这个插件来对客户端数据进行分页。现在我用PagingMemoryProxy.js来实现的时候运行到riskSQLStore.load({params:{start:0,limit:40}});报错如下:Unable to get property 'length' of undefined or null reference我的代码如下:var resultData = data.result; debugger; var obj= eval(resultData); var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore'); riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj); riskSQLStore.load({params:{start:0,limit:40}});store.js中的代码:constructor: function(cfg) { var me = this; cfg = cfg || {}; me.callParent([Ext.apply({ storeId: 'RiskySQLStore', //model: 'AADashboard.model.RiskySQLModel', pageSize:40, autoLoad: true, proxy: { type: 'ajax', reader: { type: 'array', rootProperty: 'rows', totalProperty: 'totalCount', } }, fields: [ { name: 'executeTime' }, { name: 'sqlContent' }, { name: 'parameters' }, { name: 'spendTime' }, { name: 'recordNumber' } ] }, cfg)]); }返回数据的格式:[{ success:true, totalCount:"1", rows:[ { executeTime: "Thu Jul 07 13:31:19 CST 2011", sqlContent: "SELECT T.SERV_PROV_CODE,T.STRING_KEY", parameters: "", spendTime: "2.125", recordNumber: "0" } ] } ]麻烦再帮我看下我哪个地方配错了呢? 客户端数据不需要调用load方法,那个是remote模式的(配置了url),你返回了那种数据就不需要调用load放了啊,也不需要用dwr是什么的再次加载数据,ext会自动发送ajax请求i配置的url地址获取数据的,pagingtoolbar也会自动进行分页,点击分页按钮会发送下一页参数到动态页去,参数名为pagevar resultData = data.result; debugger; var obj= eval(resultData); var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore'); riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj); riskSQLStore.load({params:{start:0,limit:40}});这个不需要了constructor: function(cfg) { var me = this; cfg = cfg || {}; me.callParent([Ext.apply({ storeId: 'RiskySQLStore', //model: 'AADashboard.model.RiskySQLModel', pageSize:40, autoLoad: true, proxy: { type: 'ajax', reader: { type: 'array', rootProperty: 'rows', totalProperty: 'totalCount', } },这里改为constructor: function(cfg) { var me = this; cfg = cfg || {}; me.callParent([Ext.apply({ storeId: 'RiskySQLStore', //model: 'AADashboard.model.RiskySQLModel', pageSize:40, autoLoad: true, proxy: { type: 'ajax',url:'你的dwr请求的动态页地址', reader: { type: 'json',////////// rootProperty: 'rows', totalProperty: 'totalCount', } },这样就行了。。不需要用dwr获取数据。。楼主好好找一个带有分页示的grid示例来看看Ext Grouping Grid分组添加分页 现在框架式dwr+extjs。dwr是通过callback返回数据结果的,例如:java类的别名.方法名({callback: function(data) { var resultData = data.result; debugger; var obj= eval(resultData); var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore'); riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj),//PagingMemoryProxy()一次性读取数据 riskSQLStore.load({params:{start:0,limit:40}});//按5条记录分布 debugger; }});而且返回的data是封装好的一个json字符串。我们要用到的数据只是这个对象中的一个属性result。按你说的url:'你的dwr请求的动态页地址', 这样也装配不到toolbar中去,网上的grid示例我看过几个了,貌似都是用ajax的url来取数据。 以前我的处理是var resultData = data.result;var obj= eval(resultData);var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore');riskSQLStore.loadData(obj);这样可以加载全部数据,现在需要分页,这种不行了,我看了有资料说如果是引用外部的data的时候proxy和reader就不能用了。我想应该是这个导致分页出问题了。这样还得回到用url这种方式处理数据了?现在dwr返回的数据在callback中也不好处理。 如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的 如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的按照你给的例子我的分页出来了。不过现在又一个问题来了。gridpanel中的数据不见了。我的代码如下:var store = Ext.create('Ext.data.Store', { model: 'AADashboard.model.RiskySQLModel', pageSize: 50, autoLoad: true, //自动加载,需要配置MemoryProxy的data属性,手动经测试无法分页,不知道是不是bug proxy: new Ext.data.MemoryProxy({ data: resultData, reader: { type: 'json' }, enablePaging: true }) });var pagingToolbar = new Ext.PagingToolbar({ store: store, displayInfo: true }); var grid = Ext.create('Ext.grid.Panel', { autoScroll: true, frame: true, title: 'QL', itemId: 'SQLTab', iconCls: 'icon-grid', store: store, columns: [{ header: 'Time', width: '6%', dataIndex: 'executeTime', }, { header: 'SQL', dataIndex: 'sqlContent', flex: 1 }, { header: 'Parameters', width: '20%', dataIndex: 'parameters', }, { header: 'Spend Time', width: '6%', dataIndex: 'spendTime', }, { header: 'Counts', width: '5%', dataIndex: 'recordNumber', }], bbar: pagingToolbar }); Ext.getCmp('TabPanel').add(grid).show();帮忙分析一下是什么原因、 如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的 如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的OK了。找出原因了。这个store还得Load一下。所以谢谢你了哦。 JQuery中的doc = (context ? context.ownerDocument || context : document) 获取位图个数和位图文件名称 一个基础性问题。请指点。 如何实现搜索引擎的查询界面 如何让一个input至允许输入数字和"-"和":"? 快速发问在线等关于checkbox点击事件 一个关于作用域的问题,求大神解释。 javascript的简单问题 求大神帮忙注释一下代码! 对象问题 javascript函数传参问题,16进制字符出现错误 js中的for in循环ul中的li
var resultData = data.result;
store .loadRawData(eval(resultData));你的data哪里来的?如果是ajax加载的要放到success回调中进行加载显示limit指定的数据要你数据库依据传递的limit参数进行返回需要的数据,ext是不按照limit进行控制的,要你服务器端控制
这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。
我省去了前面的dwr数据调用,所以你可以把data理解为传送过来的数据:[{executeTime: "Thu Jul 07 13:31:19 CST 2011",sqlContent: "SELECTT.SERV_PROV_CODE,T.STRING_KEY",parameters: "",spendTime: "2.125",recordNumber: "0" } ]
这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。你直接配置ext的store url为你的动态页地址,返回的数据需要包含和你配置一样的数据模式。。少了总数据量是分页不了的按照你的配置,你返回动态页的数据结构应该类似{totalCount:10000,rows:[{...},{...}...]}这种数据结构,rows只包含需要的数据直接加载另外一个地址返回的数据,如你的dwr数据,应该使用Ext.data.proxy.Direct数据源,而不是ajax,可以看这个:Ext4 Ext.data.proxy.Direct directFn示例或者使用examples\ux\data\PagingMemoryProxy.js这个插件来对客户端数据进行分页。
这个data是dwr调用java的方法返回来的数据。ext不按照limit进行控制的话,那我怎么把数据的总条数传给ext呢?请求指教。你直接配置ext的store url为你的动态页地址,返回的数据需要包含和你配置一样的数据模式。。少了总数据量是分页不了的按照你的配置,你返回动态页的数据结构应该类似{totalCount:10000,rows:[{...},{...}...]}这种数据结构,rows只包含需要的数据直接加载另外一个地址返回的数据,如你的dwr数据,应该使用Ext.data.proxy.Direct数据源,而不是ajax,可以看这个:Ext4 Ext.data.proxy.Direct directFn示例或者使用examples\ux\data\PagingMemoryProxy.js这个插件来对客户端数据进行分页。现在我用PagingMemoryProxy.js来实现的时候运行到riskSQLStore.load({params:{start:0,limit:40}});报错如下:
Unable to get property 'length' of undefined or null reference我的代码如下:
var resultData = data.result;
debugger;
var obj= eval(resultData);
var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore');
riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj);
riskSQLStore.load({params:{start:0,limit:40}});store.js中的代码:
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'RiskySQLStore',
//model: 'AADashboard.model.RiskySQLModel',
pageSize:40,
autoLoad: true,
proxy: {
type: 'ajax',
reader: {
type: 'array',
rootProperty: 'rows',
totalProperty: 'totalCount',
}
},
fields: [
{
name: 'executeTime'
},
{
name: 'sqlContent'
},
{
name: 'parameters'
},
{
name: 'spendTime'
},
{
name: 'recordNumber'
}
]
}, cfg)]);
}返回数据的格式:
[{ success:true,
totalCount:"1",
rows:[
{
executeTime: "Thu Jul 07 13:31:19 CST 2011",
sqlContent: "SELECT T.SERV_PROV_CODE,T.STRING_KEY",
parameters: "",
spendTime: "2.125",
recordNumber: "0"
}
]
} ]麻烦再帮我看下我哪个地方配错了呢?
debugger;
var obj= eval(resultData);
var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore');
riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj);
riskSQLStore.load({params:{start:0,limit:40}});这个不需要了
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'RiskySQLStore',
//model: 'AADashboard.model.RiskySQLModel',
pageSize:40,
autoLoad: true,
proxy: {
type: 'ajax',
reader: {
type: 'array',
rootProperty: 'rows',
totalProperty: 'totalCount',
}
},这里改为constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'RiskySQLStore',
//model: 'AADashboard.model.RiskySQLModel',
pageSize:40,
autoLoad: true,
proxy: {
type: 'ajax',url:'你的dwr请求的动态页地址',
reader: {
type: 'json',//////////
rootProperty: 'rows',
totalProperty: 'totalCount',
}
},这样就行了。。不需要用dwr获取数据。。楼主好好找一个带有分页示的grid示例来看看
Ext Grouping Grid分组添加分页
现在框架式dwr+extjs。dwr是通过callback返回数据结果的,例如:
java类的别名.方法名({callback: function(data) {
var resultData = data.result;
debugger;
var obj= eval(resultData);
var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore');
riskSQLStore.proxy = new Ext.data.PagingMemoryProxy(obj),//PagingMemoryProxy()一次性读取数据
riskSQLStore.load({params:{start:0,limit:40}});//按5条记录分布
debugger;
}});
而且返回的data是封装好的一个json字符串。我们要用到的数据只是这个对象中的一个属性result。按你说的url:'你的dwr请求的动态页地址', 这样也装配不到toolbar中去,网上的grid示例我看过几个了,貌似都是用ajax的url来取数据。
var obj= eval(resultData);
var riskSQLStore = Ext.data.StoreManager.lookup('RiskySQLStore');
riskSQLStore.loadData(obj);
这样可以加载全部数据,现在需要分页,这种不行了,我看了有资料说如果是引用外部的data的时候proxy和reader就不能用了。我想应该是这个导致分页出问题了。这样还得回到用url这种方式处理数据了?现在dwr返回的数据在callback中也不好处理。
如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的
如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的按照你给的例子我的分页出来了。不过现在又一个问题来了。gridpanel中的数据不见了。我的代码如下:var store = Ext.create('Ext.data.Store', {
model: 'AADashboard.model.RiskySQLModel',
pageSize: 50,
autoLoad: true, //自动加载,需要配置MemoryProxy的data属性,手动经测试无法分页,不知道是不是bug
proxy: new Ext.data.MemoryProxy({ data: resultData, reader: { type: 'json' }, enablePaging: true })
});var pagingToolbar = new Ext.PagingToolbar({ store: store, displayInfo: true });
var grid = Ext.create('Ext.grid.Panel', {
autoScroll: true,
frame: true,
title: 'QL',
itemId: 'SQLTab',
iconCls: 'icon-grid',
store: store,
columns: [{
header: 'Time',
width: '6%',
dataIndex: 'executeTime',
},
{
header: 'SQL',
dataIndex: 'sqlContent',
flex: 1
},
{
header: 'Parameters',
width: '20%',
dataIndex: 'parameters',
},
{
header: 'Spend Time',
width: '6%',
dataIndex: 'spendTime',
},
{
header: 'Counts',
width: '5%',
dataIndex: 'recordNumber',
}],
bbar: pagingToolbar
});
Ext.getCmp('TabPanel').add(grid).show();
帮忙分析一下是什么原因、
如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的
如果你确实要dwr返回的数据,就需要PagingMemoryProxy.js这个插件了。。ext5对这个插件做了调整。。合并到Ext.data.proxy.Memory里面,配置enablePaging就行。。参考:Ext5 Ext.data.proxy.Memory客户端数据分页示例而且loadData方法有点问题,无法分页。。只能在构造的时候直接配置data属性才能分页,具体看上面的OK了。找出原因了。这个store还得Load一下。所以谢谢你了哦。