如何知道商店中是否有待更新的待处理记录?

时间:2014-09-19 08:25:40

标签: extjs5

我有一个网格面板,我在其中显示记录数。有2个按钮,“Update”和“Close”。 如果我们点击“close”按钮,那么应该看看是否有任何待处理记录,如果是,那么它应该告诉用户完成它, 如果没有,那么它将重定向到另一个URL。

在'dockedItems'中有一个关闭按钮。在那里我必须写出逻辑。我知道,我必须使用isDirty()函数,但我需要指导如何使用它。

{
                xtype : 'gridpanel',
                region: 'center',
                title : 'Search Results',
                id : 'searchResultsGrid',
                plugins: [{
                    ptype: 'cellediting',
                    listeners: {
                        beforeedit : function (editor, context, eOpts) {
                            console.log('beforeedit');
                        },
                        edit : function (editor, context, eOpts) {
                            console.log('edit');
                        },
                        canceledit : function (editor, context, eOpts) {
                            console.log('canceledit');
                        }
                    }
                }],
                columnLines : true,
                autoScroll  : true,
                selModel  : new Ext.selection.CheckboxModel({
                    checkOnly: true,
                    enableKeyNav: false,
                    allowDeselect: true,
                    deselectOnContainerClick: false
                }),
                border      : true,
                resizable   : true,
                columns : gridColumnList,              
                store : {
                    model : poModel,
                    proxy : new Ext.Hmhco.SFDCProxy({
                        sessionId: '{!$Api.Session_ID}',
                        model: poModel,
                        url: "https://" + location.hostname + "/services/data/v31.0/"
                    })
                },
                dockedItems: [{
                    xtype: 'toolbar',
                    items: [{
                        itemId: 'update',
                        text: 'Update',
                        handler: function(button, evt) {

                            var grid = Ext.getCmp('searchResultsGrid'),
                                ds = grid.getStore();

                            ds.sync({
                                success : function (batch, options) {
                                    console.log('Sync Success!');
                                },
                                failure : function (batch, options) {
                                    var errorList = [],
                                        exceptionList = batch.getExceptions();
                                    for (var i = 0; i < exceptionList.length; i++) {
                                        var err = exceptionList[i].getError();
                                        errorList.push({
                                            url: err.request.getUrl()
                                        });
                                    }
                                    exceptionList = 1;
                                    console.dir(errorList);
                                }
                            });
                        }
                    },'-', {
                        itemId: 'close',
                        text: 'Close',
                        handler: function(button, evt) {
                            // TO DO : It should  see if there are pending updates (store.isDirty()) and confirm the close with the user via an Ext.Msg method.                                                                 
                        }
                    }]
                }],  // dockedItems
            }],

1 个答案:

答案 0 :(得分:0)

我不认为isDirty会对此有所帮助。 IMO这里的最佳选择是使用Ext.Data.Store.getModifiedRecords()Ext.Data.Store.getRemovedRecords()。如果任何此函数返回非空数组,则表示您有一些待更新的记录需要更新。