Hi, Condor. Thanks for providing this component -- I was a little floored when I realized Ext didn't provide (pre-4) client-side paging out of the box.

I'm using PagingStore v0.5 with ExtJS 3.3.2 (that version is supplied with the product we're using).

I have an issue with handling of DataProxy 'exception' events. Previously, when using JsonStore, I assigned an event handler to 'exception' events which just pulls the error message out of the server-side response and displays it in an Ext.MessageBox.alert(...).

Dropping PagingJsonStore into place breaks that functionality. I've confirmed this by reverting back to JsonStore and it works fine.

The issue is that it is actually executing my exception handler, but then some later code -- not mine -- is closing the dialog box before it is even visible (I know it isn't mine because I don't have any code anywhere that explicitly closes the box). I can see this by slowing down the execution using FireBug to step through the code. In that case, the dialog box opens, and stays open until I 'continue' the execution. It's as if there is some other exception handling being added after mine.

I haven't debugged it more deeply than that. Obviously I could step through the code further and eventually find the root cause... which I'll do if I have to, but was hoping you might have a ready insight that could save me the time. Also wanted to alert you to this 'bug' (in that it clearly violates the 'drop-in replacement for *Store' claim).

Here's a very abbreviated code segment. I'll send more detail if needed:
Code:
     var storeConfigObj = {
            proxy : new Ext.data.HttpProxy({
                method: Const.ajaxMethod, // GET
                url: Const.ajaxUrl,
                timeout: Const.ajaxHttpTimeout
            }),
            baseParams: {
                'OP': 'CTL_GET_RESULTS',
                'ctlConfigId': this.ctlConfigId//,
//                'start': 0,
//                'limit': Const.rowsPerPage
            },
            autoLoad: false,
            remoteSort: myobj.configObj['clientSideEnabled'] ? false : true,

            // ... other JsonStore configuration details

            listeners: {
                exception: function(proxy, type, action, options, response, arg) {
                    if (type == 'response') {
                        var jsonData = Ext.util.JSON.decode(response.responseText);
                        Ext.MessageBox.alert('ERROR: '+jsonData.errorCode,
                             jsonData.errorMsg);
                    }
                },
                // beforeload and load listeners
            }
        };


   // use PagingJsonStore if configured for client-side
    if (this.configObj['clientSideEnabled']) {
        // 'exception' event handling DOESN'T WORK
        this.gridStore = new Ext.ux.data.PagingJsonStore(storeConfigObj);
    } else {
        // 'exception' event handling WORKS
        storeConfigObj.baseParams.start = 0;
        storeConfigObj.baseParams.limit = Const.rowsPerPage;
        this.gridStore = new Ext.data.JsonStore(storeConfigObj);
    }

    // assign created store to GridPanel
You can see that the code is identical for the JsonStore and PagingJsonStore cases. Code selects between the two depending upon whether the 'clientSideEnabled' application config attribute is true or false. They both use the same exact Store configuration object, so there is no 'accidental' difference in the configuration between the two cases. The only other differences are that I add the 'start' and 'limit' params to baseParams in the JsonStore case, and set remoteSort to true in the JsonStore case and false in the PagingJsonStore case.

Thanks for any help you can provide.