PDA

View Full Version : Ext.ux.data.PagingMemoryProxy



trbs
4 Oct 2007, 2:21 PM
It appears that the PagingMemoryProxy works unchanged on Ext 2.0 so i thought i'd drop it in here too :)
Thanks to troubler for reporting it here: http://extjs.com/forum/showthread.php?p=69958#post69958

Here another one of my fine Ext contributions :">

Ext.ux.data.PagingMemoryProxy
A proxy for local / in-browser data structures which supports paging / sorting / filtering / etc.

Wiki
http://extjs.com/learn/Extention:PagingMemoryProxy

Download
PagingMemoryProxy is part of one of the locale examples i wrote for the official Ext distribution, you can find it under the Ext/examples/locale folder. The User eXtension will be further developed here and can be downloaded at the url below.

See http://ido.nl.eu.org/ext-pagingmemoryproxy/ for a demo and download links.

Online Demo
You can find an example of the PagingMemoryProxy in the official Ext distribution: Multiple Languages Example (http://extjs.com/deploy/ext/examples/locale/multi-lang.html)
The PagingMemoryProxy is used in the bottom grid, that pages and sorts the long Month names of the selected language.

Todo / Future Thought

Anybody has a wish list ?? if so please add to the forum thread


Changelog

1.3 : (30-09-2007) Added customFilter config option.
1.2 : (29-09-2007) Fixed several sorting bugs, thanks to dogmatic!
1.1 : fixed sorting algoritm
1.0 : initial release as User eXtension

DeeZ
6 Feb 2008, 9:32 AM
Hi,

There is a bug in the PagingMemoryProxy extension concerning the sort.

For a complete example code, just unzip the ZIP in the "examples" directory of the ExtJS framework.

To reproduce the pb:
1) on the page 1 - sort in ascending mode of the "company" column: normally between "3com" and "ATandT Inc." the company "alabama" and "armada" should appear
2) on the page 1 - sort in descending mode of the "change" column: "-0.48" appears between "0.31" and "0.53"
=> cf screenshoot

is the bug due to the fact that a XML reader is used ?
any ideas to solve the pb ?

Thanks.

paubach
8 Feb 2008, 6:26 AM
I'm also having this problem :S

paubach
15 Feb 2008, 8:58 AM
SOLVED: Update the version of PagingMemoryProxy to 1.3.


Anyway still exists a problem if you try to sort while have grouped info.

Pau

ajaxE
28 Feb 2008, 3:05 PM
SOLVED: Update the version of PagingMemoryProxy to 1.3.


Anyway still exists a problem if you try to sort while have grouped info.

Pau

Is this working for GroupingStore in Ext2.0? It seems not working for me.

Thanks!

paubach
3 Mar 2008, 3:18 AM
No, what I have done there is to use the groupOnSort option. If you don't mind you can use and works fine.

WBarnie
11 Mar 2008, 3:29 PM
We are trying to use a grid with PagingMemoryProxy. I was successful at displaying the data but not paging, which I have been trying to fix. We are using Extjs release 1.1. I have gone through the forum

jsakalos
11 Mar 2008, 3:39 PM
I have already responded to this post in another thread. Please, don't cross post or double post. It won't lead to faster response but to confusion only.

WBarnie
12 Mar 2008, 6:40 AM
Hi yesterday I posted a question which you responded and said that I should post to the appropriate forum. I then posted the question again, thinking I was posting to the user extension forum. Is this the correct place that I should post my question? Sorry for the double posting, don

jsakalos
12 Mar 2008, 1:08 PM
Aah, now I understand. I'm moving this post to it's right place.

WBarnie
16 Apr 2008, 6:14 AM
I am still having problems with the PagingMemoryProxy. I review the sample that you suggested and tried to model my code after your, however, there are many differences. I have specified that only 25 records should be displayed and I have 30 rows and all are being displayed on the first page. The footer is showing that page 1 of 2 on the left side of the footer and right side is shows displaying items 1

hendricd
16 Apr 2008, 6:35 AM
You appear to be wiping out your hard work after loading it:



ds.on('load', function()
{
ds = new Ext.data.Store({
proxy: new Ext.ux.data.PagingMemoryProxy(jsonReader.jsonData),
reader: jsonReader,
remoteSort: true
});
});


How come?

WBarnie
16 Apr 2008, 12:20 PM
Could you please explain you comments are not helpfiul

hendricd
16 Apr 2008, 12:35 PM
you comments are not helpfiul

I thought I just asked a question, geez.

Are you not re-creating the grid again right after you spent the time to load it, right? You've wiped out all that was to be gained by loading it in the first place, yes?

WBarnie
18 Apr 2008, 5:21 AM
I am still not able to get this to work. The footer shows that records 1

hendricd
18 Apr 2008, 5:29 AM
function setupDataSource(){
ds = new Ext.data.JsonStore({
proxy: new Ext.ux.data.PagingMemoryProxy(jsonReader.jsonData),
url: 'DriveInListingAction.do',

ux.PagingMemoryProxy handles arrays of array records. It is designed to take the place of your server.

You are still making GET requests of your server. Why do you need PagingMemProxy at all in that scenario ?

WBarnie
18 Apr 2008, 7:28 AM
I need a PagingMemProxy because I want to limit page result to 25 rows per page and I have more than 1 page worth of data. I only want to go to the server the first time to get the result and then use PagingMemProxy. You are telling me what I already know. I know I am going back to the server but I do not know how to fix it. Answer that would be very helpful

hendricd
18 Apr 2008, 8:15 AM
Since you are using PagingMemProxy merely as a local cache of the entire server response, you need only give the PagingMemProxy it's array data when you decide to query the server again:



var driveInGrid = function() {
var ds;
var grid;
var cm;
var paging;
var gridFoot;
var serverObj = new Ext.data.Connection();

function setupDataSource(){
ds = new Ext.data.Store({
proxy: new Ext.ux.data.PagingMemoryProxy([]), //start out empty
id: 'getAppraisalId',
reader: new Ext.data.ArrayReader({}, [
{name: 'getAppraisalNumber' },
{name: 'getAppraisalId' },
{name: 'getVehicleModel'},
............

]),
remoteSort: true
});

}



return {
init : function() {
setupDataSource();
buildGrid();
setupButtons();
this.load();
},
load : function(url,params){
params || (params = {userAction:'list' ,searchType:document.forms[0].searchType.value, searchValue:document.forms[0].searchValue.value});
serverObj.request({
url: url || 'DriveInListingAction.do',
method :'GET',
params : params,
success: function(response){
//give the proxy the entire array result set
ds.proxy.data = Ext.decode(response.responseText);
//now, let your paging Store and local Proxy take over
ds.load({params:{ start:0, limit:25}});
},
failure: youHandleIt
});
},
getDataSource: function() {
return ds;
}
};
To reload from the server again just call (optionally, without any arguments):
driveInGrid.load()again when you need to.

Is that what you're looking to do? If you send back arrays instead of JSON records you're all set.

WBarnie
18 Apr 2008, 11:55 AM
The data is in the jsonreader? not an array. All the example use an array reader. Do I need an array reader? How do I get for a jsonread to an array reader? The data is in json format. Thanks!

hendricd
18 Apr 2008, 12:03 PM
I've only seen it successfully work with arrays.

You must have seen this (http://extjs.com/forum/showthread.php?p=103827#post103827)then, as your earlier example was modeled after Bean's approach.

Asked Bean yet?

hendricd
18 Apr 2008, 12:22 PM
@WBarnie - Have you seen this (http://extjs.com/forum/showthread.php?t=32908)one too? Dunno if it applies tho.

WBarnie
28 Apr 2008, 9:14 AM
If I understand your last response, the PagingMemoryProxy only works with array readers. I have reviewed the documentation trying to figure out how to make a JsonReader an ArrayReader. We are using a JsonStore and the root element is the array of data. I tried this and I do not get any error and the display is still wrong. Also I do not understand why all rows are displayed when I specify a limit of 25? I am using fire fox and tried to debug the problem. I set several break point in PagingMemoryProxy not of them were hit. I question whether or not I have set this up correctly. I down loaded the PagingMemoryProxy and added 2 folders, ux and data.

hendricd
28 Apr 2008, 9:19 AM
If I understand your last response, the PagingMemoryProxy only works with array readers.

Correct - Arrays only.

But, what does your JSON response look like? Is the array data in there somewhere? Just pass that array to the Proxy.

WBarnie
5 May 2008, 12:27 PM
yes the array is in the jsonReader, jsonData.rows is thew data array. Going through the debugger, I can see jsonReader.jsonData.rows in the debugger, but when I try to reference it, I get not defined error. Not sure why perhaps this is private data?

mrollins
16 May 2008, 6:36 AM
Hey, thanks for the great addon. We're really getting a lot of use out of it.

So far, we've only used PMP on GridPanels, but now we're needing to use a PMP on an EditorGrid. All the data is being served up correctly, but we have a problem when update a record or add a new one.

When I add a new record, enter some values for it, then sort my grid, the new record is disappearing. The same thing occurs when I edit an existing record, except that the edits disappear (but the record stays).

I'm thinking that I may need to send the new record or edits back to the proxy (we're using remote sorting and remote filtering). Right now, when I add a new record, I do this (the insert is in red):



{
text: 'Add',
handler: function(){
var r = new Record({});
grid.stopEditing();
store.insert(0, r);
grid.startEditing(0, 0);
}
}


Do I need to add the new record to the proxy, as well? Do I need to push any edits up to the PMP, also?

Thanks in advance.

hendricd
16 May 2008, 6:42 AM
@mrollins -- Yes, ultimately you have to do the same thing you would with a real server. The PMP is, in essence, your server. Currently PMP is coded for read-only use, so you must update/append each row in the proxy.data array when you commit the store changes.

mankz
27 May 2008, 7:55 AM
I'm also trying this approach, loading 300 records into the PagingMemProxy and performing a full update (based on your code snippets below) if users modifies a record.

What happens to memory when you do the following:


ds.proxy.data = Ext.decode(response.responseText);

Is there a memory leak here caused by old data not being deleted before being overwritten?
I.e. do I need to do


delete ds.proxy.data;

first?


Since you are using PagingMemProxy merely as a local cache of the entire server response, you need only give the PagingMemProxy it's array data when you decide to query the server again:



var driveInGrid = function() {
var ds;
var grid;
var cm;
var paging;
var gridFoot;
var serverObj = new Ext.data.Connection();

function setupDataSource(){
ds = new Ext.data.Store({
proxy: new Ext.ux.data.PagingMemoryProxy([]), //start out empty
id: 'getAppraisalId',
reader: new Ext.data.ArrayReader({}, [
{name: 'getAppraisalNumber' },
{name: 'getAppraisalId' },
{name: 'getVehicleModel'},
............

]),
remoteSort: true
});

}



return {
init : function() {
setupDataSource();
buildGrid();
setupButtons();
this.load();
},
load : function(url,params){
params || (params = {userAction:'list' ,searchType:document.forms[0].searchType.value, searchValue:document.forms[0].searchValue.value});
serverObj.request({
url: url || 'DriveInListingAction.do',
method :'GET',
params : params,
success: function(response){
//give the proxy the entire array result set
ds.proxy.data = Ext.decode(response.responseText);
//now, let your paging Store and local Proxy take over
ds.load({params:{ start:0, limit:25}});
},
failure: youHandleIt
});
},
getDataSource: function() {
return ds;
}
};
To reload from the server again just call (optionally, without any arguments):
driveInGrid.load()again when you need to.

Is that what you're looking to do? If you send back arrays instead of JSON records you're all set.

hendricd
27 May 2008, 8:06 AM
I'm also trying this approach, loading 300 records into the PagingMemProxy and performing a full update (based on your code snippets below) if users modifies a record.

What happens to memory when you do the following:


ds.proxy.data = Ext.decode(response.responseText);Is there a memory leak here caused by old data not being deleted before being overwritten?
I.e. do I need to do


delete ds.proxy.data; first?
It's certainly not required, but may not be a bad idea either. :-?

mankz
27 May 2008, 11:02 AM
Would sIEve detect this (if in fact it was a leak) or is it more concerned with orphaned dom elements etc?

hendricd
27 May 2008, 11:04 AM
Yes, sIeve focuses on DOM linkage.

shankys_4u
1 Sep 2008, 4:21 AM
HI, I am a newbie any needs some help.I have read Grd FAQ but still confused..

I am using Paging toolbar and set all config params.The footer of the grid panel shows 55 docs but needs to show 25 which I have set as pagesize.Also the next and previous doesn't show proper results.
Here's the code : required expected changes highlighted in bold

If I need to use ext.extend then,how should I proceed....please help/advice...


load: function(o){
design=eval("("+o.responseText+")");
cols=[]; maps=[];
for (var i=0; i<design.column.length; i++){
cols.push(
{
dataIndex:design.column[i]["@name"],
header:design.column[i]["@title"],
width:design.column[i]["@width"],
sortable: true

}
);
maps.push(
{
name: design.column[i]["@name"],
mapping: design.column[i]["@columnnumber"]
}
);
} //end of for loop

myDataStore = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: this.view +'?ReadViewEntries',
method: 'GET'
}),

reader: new Ext.data.DominoJsonReader( {}, Ext.data.Record.create(maps) ),
baseParams:{'OutputFormat':'JSON'},
autoLoad: true,

remoteSort: true

});

//*********************************************************************/////custom functions//////
function renderTitle(value, p, record) {
return String.format('<a href="#" onClick="javascript:alert("HI How r u ??")">{0}</a>',
value, record.data.unid);
} ;
function renderBold(value) {
return '<B>'+ value + '</B>';
} ;
//*********************************************************************/////custom functions///////


///////////////////////////////////////////////////paging bar /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var pagingBar = new Ext.PagingToolbar({
pageSize: 25,
store: myDataStore,
refreshText: 'Reload Records',
displayInfo: true,
displayMsg: 'Displaying records {0} - {1} of {2}',
emptyMsg: "No Records found",
items:[
'-', {
pressed: false,
enableToggle: true,
text: 'Show Preview',
//cls: 'x-btn-text-icon',
toggleHandler: function(btn, pressed){
//var view = grid.getView();
//view.showPreview = pressed;
//view.refresh();
Ext.MessageBox.alert('Status','!! Coming Soon' );
}
}]
});
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
this.cm = new Ext.grid.ColumnModel( cols ); ///define columnModel

///////////// Start of GRID////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var grid = new Ext.grid.GridPanel({
renderTo: 'SNOZ',
store:myDataStore,
colModel:this.cm,
// inline toolbars
tbar:[{
text: 'Add Record',
tooltip: 'Add a new record'
//iconCls:'add'
}, '-', {
text: 'Options',
tooltip: 'Create options'
//iconCls:'option'
},'-',{
text: 'Remove',
tooltip: 'Remove/Delete record'
//iconCls:'remove'
}],
//viewConfig: {
// forceFit: true
// },
view: new Ext.grid.GridView ({
//view: new Ext.grid.GroupingView ({
forceFit: true
//showPreview:true,
//groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
}),
sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
width:600,
height:350,
loadMask: {msg: 'Loading Records, please wait...'},
//frame:true,
title:' Web 2.0 JSON views',
iconCls:'icon-grid',
collapsible: true,
animCollapse: false,
shadow: true
bbar: pagingBar // paging bar on the bottom

}); // end of grid panel..
/////////////////////////////////////////// End fo Grid/////////////////////////////////////////////////////////////////////////////////////////////////
grid.render();

//********************************************************************************************************
// trigger the data store load
myDataStore.load({params:{start:0, limit:25}});
myDataStore.on('load',function(){alert('it just loaded the Data Store')});


//********************************************************************************************************
grid.on('rowclick', function(){
var selectRecordID = grid.getSelectionModel().getSelected().id;
Ext.MessageBox.alert ('Status', '<b>Got @unid </b>- can be used to open record/document in new window or tab : ' + selectRecordID
);
});

} //end of load function

Emmster
24 Sep 2008, 7:05 AM
First off, thanks trbs for the extension!

I'm having a little problem with the sorting that I was hoping someone might be able to help me out with: I set remoteSort to true and while it does sort the first page, it does not sort the ones after that. Any ideas on what I might be doing wrong? Thanks!



//Create data store
var storeResults = new Ext.data.Store(
{
proxy: new Ext.ux.data.PagingMemoryProxy(proxyData),
reader: new Ext.data.JsonReader(),
remoteSort: true
});

//Create column model
var cmResults = new Ext.grid.ColumnModel(gridColumns);

//Add table
var table = new Ext.grid.GridPanel(
{
id: resultsGridId,
title: queryResults,
store: storeResults,
cm: cmResults,
autoHeight: true,
stripeRows: true,
autoShow: true,
enableColumnHide: true,
enableColumnMove: true,
enableDragDrop: true,
enableHdMenu: true,
bbar: new Ext.PagingToolbar(
{
pageSize: 20,
store: storeResults,
displayInfo: true,
displayMsg: tablePagingStart + ' {0} - {1} ' + tablePagingOf + ' {2}',
emptyMsg: noResultsFound
}),
viewConfig: { forceFit: true },
tbar:
[
{
id: 'btnPrintResults',
text: printResultsMsg,
handler: printResults,
disabled: false
}
]
});
storeResults.load({ params: { start: 0, limit: 20} });

Absalom
25 Sep 2008, 4:02 AM
I have the same problem I think. With remoteSorting set to false it sorts within the page, but with remoteSorting set to true it ALMOST sorts within all pages. I have 4 columns: id, first name, last name and email. the id column can be sorted through out all pages. The name columns can only be sorted through out all pages in descending order, NOT ascending. The email column...well I dont know what the *** the email column is doing.

EDIT: I just noticed that whenever I sort in ascending order it sorts on id instead of the chosen column. This goes for the email column as well, but with the addition that it doesnt sort in descending properly either.

EDIT2: It seems when it comes to the email column that the first 45 rows, out of 50, are in order when sotred in descending mode. from row 46 it then starts over at 'a' and then continues, perfectly sorted through out the pages.

Emmster
25 Sep 2008, 4:31 AM
Because I need to print all the results in the sorted order, I have added a line of code in the PagingMemoryProxy code that grabs "result.records" after the sorting section so I can use it later. Interestingly, the whole thing is sorted correctly on my end after sorting it on a field and then printing out all pages. However, if I then go to the next page, it gets all screwed up again.

Honestly, the code that the PagingMemoryProxy uses is a little over my head. Maybe it wouldn't be if I spent some time looking at it, though...

Emmster
25 Sep 2008, 12:39 PM
Ok, I figured it out, after some digging. It looks like after sorting the table and then requesting a new page, the sorting parameters are not passed into the Load function of the PagingMemoryProxy code. I wasn't smart enough to figure out how to fix that issue, but what I ended up doing was storing the contents of the 'results' variable in the PagingMemoryProxy code into a variable used throughout my application, then passing it back to the 'results' variable when the load function is called again. If anyone has a more elegant fix, I'm all ears!

Condor
9 Oct 2008, 6:37 AM
Here is a small override for PagingMemoryProxy to make it compatible with the Ext.ux.grid.Search user extension (http://gridsearch.extjs.eu/).


Ext.override(Ext.ux.data.PagingMemoryProxy, {
anyMatch: false,
caseSensitive: false,
load : function(params, reader, callback, scope, arg) {
params = params || {};
var result;
try {
result = reader.readRecords(this.data);
} catch(e) {
this.fireEvent("loadexception", this, arg, null, e);
callback.call(scope, null, arg, false);
return;
}
if (this.customFilter!=null) {
result.records = result.records.filter(this.customFilter);
result.totalRecords = result.records.length;
} else if (params.filter!==undefined) {
result.records = result.records.filter(function(el){
if (typeof(el)=="object"){
var att = params.filterCol || 0;
return String(el.data[att]).match(params.filter)?true:false;
} else {
return String(el).match(params.filter)?true:false;
}
});
result.totalRecords = result.records.length;
} else if (params.fields) {
var fields = Ext.decode(params.fields),
query = Ext.util.MixedCollection.prototype.createValueMatcher.call(
this, params.query, this.anyMatch, this.caseSensitive);
result.records = result.records.filter(function(r){
if (r.data){
for (var i = 0; i < fields.length; i++) {
if (query.test(r.data[fields[i]])) {
return true;
}
}
return false;
} else {
return query.test(String(r));
}
}
result.totalRecords = result.records.length;
}
if (params.sort!==undefined) {
var dir = String(params.dir).toUpperCase() == "DESC" ? -1 : 1;
var fn = function(r1, r2){
return r1==r2 ? 0 : r1<r2 ? -1 : 1;
};
var st = reader.recordType.getField(params.sort).sortType;
result.records.sort(function(a, b) {
var v = 0;
if (typeof(a)=="object"){
v = fn(st(a.data[params.sort]), st(b.data[params.sort])) * dir;
} else {
v = fn(a, b) * dir;
}
if (v==0) {
v = (a.index < b.index ? -1 : 1);
}
return v;
});
}
if (params.start!==undefined && params.limit!==undefined) {
result.records = result.records.slice(params.start, params.start+params.limit);
}
callback.call(scope, result, arg, true);
}
});

roberthenniger
9 Oct 2008, 9:08 AM
Hi to all.
Today I found this ux and it seems to be the solution for my large grids.
Has someone already tested if this extension works with
1. summary extension
2. grouping store/groupsummary
3. onmetachange event to make the grid autoconfigure itself

Thanks for in advance.

Robert

PS: I am aksing because i wrote a gridpanel which supports already all this stuff together.

charleshimmer
5 Nov 2008, 8:45 AM
@mankz - you mentioned some code to delete/update records in the PMP. Do you have any examples of that code? Did you get it working? I can read and sort the pmp data just fine but having some problems updating and delete pmp data.

I just re-read your post mankz and saw it looks like you are reloading the whole dataset upon an edit. Is that what you ended up doing or did you find a way to edit/delete proxy data records?

charleshimmer
5 Nov 2008, 10:56 AM
K I ended up doing this for anybody who is using PMP for more than just a ready-only cache of records.

I added the following function to the end of PagingMemoryProxy


remove : function(record) {

for (var i in this.data.rows)
{
if (this.data.rows[i].id == record.data.id){
this.data.rows.splice(i,1);
}

}
}If anybody knows a more efficient way besides having to loop through the whole data array I would love to hear it. I thought indexOf would work but I couldn't get it to fly (relatively new to JavaScript). I'm planning on doing record updates this way as well till I get something better (or somebody with more experience posts a better solution).

giovanniG
14 Nov 2008, 7:37 AM
Hi,

I have a dumb question. I am trying to use PagingMemoryProxy and I have included the following line on my html page:

<script src="/ext-2.2/static/Ext.ux.data.PagingMemoryProxy.js" type="text/javascript"></script>

(The file does exist). Also, in my extjs file I have included this line:

proxy: new Ext.ux.data.PagingMemoryProxy({url: url}),

But when I hit the page firebug gives me an error:

Ext.ux.data is undefined
proxy: new Ext.ux.data.PagingMemoryProxy({url: url}),


I am sure I have just not set ux up right as this is my first time using user extensions.

Can someone help? I can post all my code if necessary.

Thanks

Giovanni

giovanniG
14 Nov 2008, 8:39 AM
Fixed it. I had an old version of the file.Thanks.

TopKatz
23 Jan 2010, 9:15 AM
I have an app running in 2.3 using PMP 1.4, I have been converting the app over to 3.1 and PMP is giving me an issue. I'm using it with a dataview, and in 3.1 the dataview displays all the records, while it should only show one at a time. Here is what Im doing:

store config:


this.pagingStore = new Ext.data.Store({
pruneModifiedRecords : true,
proxy : new Ext.ux.data.PagingMemoryProxy(),
reader : new Ext.data.ArrayReader({}, [ { name: 'Page' }, { name: 'DocNo' }, { name: 'FileExt' } ])
});


data for the store:


arrPages = [[0, "180", "tif"], [1, "180", "tif"], [2, "180", "tif"]];


Populating store:


details.pagingStore.proxy.data = arrPages;
details.pagingStore.load({params:{start:0, limit:1}});


When I look into the pagingStore.data object in the app running 3.1 I see all three records, however in 2.3 I see only the one record (as it should be).

Is there a trick to get this going in 3.1?

Katz

jsakalos
24 Jan 2010, 1:54 AM
PagingStore is a user extensions and we cannot tell if the author already ported it to Ext 3.x. The best would be to ask in the original thread. User extensions are not supported on this forum by the Ext support team but by their authors.

TopKatz
24 Jan 2010, 5:34 AM
I had it working in 3.0.1 in another app at one point, however I went in another direction. That was before 3.1, so Im not sure it works in 3.1.

I have since migrated this project over to the Ext.ux.data.PagingStore and all is well.

Thanks

jsakalos
24 Jan 2010, 6:53 AM
Perfect! Thank you to let us know that PagingStore is Ext 3.1 compatible.

Neha Sodhi
2 Jul 2010, 4:19 AM
Thanks a lot...This small snippet has solved my big problem...