使用EXT.PagingMemoryProxy+Exg.Grid进行内存分页,当使用Bar上的删除按钮对store进行remove操作并且用分页条翻页后发现被删除的数据依然存在。
如果使用Bar上的增加按钮进行新增操作后,点击分页条刷新按钮GRID内的数据会返回到新增之前的状态。
总之就是分页控件使用的store和grid的store似乎是2个东西一样,但是我代码里面都是使用同一个store的。
var line_grid = new Ext.grid.GridPanel({
        region: 'center',
        margins: '5 5 5 5',
        plugins: [line_editor],
        frame: true,
        title: '消息行',
        stripeRows: true, 
        store: line_store,
        id: 'line_grid',
        //        applyTo: 'grid',
        trackMouseOver: true,
        height: 300,
        width: 500,
        loadMask: { msg: '正在加载数据,请稍侯……' },
        viewConfig: {
            forceFit: true
        },        tbar: [{
            iconCls: 'icon-user-add',
            text: '添加消息行', //添加按钮
            handler: function () {
                Ext.Ajax.request({
                    url: 'MsgLineService.aspx?parm=LineInsertReturn&headerid=' + Header_ID + '&Seq=0&Type=1&Segment1=' + encodeURIComponent("Blank") + '&Segment2=Blank&Segment3=Blank',
                    method: 'post',
                    success: function (response, opts) {
                        var Json = Ext.util.JSON.decode(response.responseText);
                        var e; 
                        $.each(Json, function (i, item) {
                            e = new intranet_msg_lines({
                                Header_ID: item.Header_ID,
                                Line_id: item.Line_id,
                                Seq: item.Seq,
                                Type: item.Type,
                                Segment1: item.Segment1,
                                Segment2: item.Segment2,
                                Segment3: item.Segment3
                            });
                        });
                        line_editor.stopEditing();
                        line_store.insert(0, e);
                        line_grid.getView().refresh();
                    },
                    failure: function () { Ext.Msg.alert("Insert Data Faile!"); }
                })
            }
        }, {
            ref: '../removeBtn',
            iconCls: 'icon-user-delete',
            text: '移除消息行', //删除按钮
            disabled: true,
            handler: function () {
                line_editor.stopEditing();
                var s = line_grid.getSelectionModel().getSelections();
                for (var i = 0; i < s.length; i++) {
                    var record = s[i]; //每行記錄
                    Ext.Ajax.request({
                        url: 'MsgLineService.aspx?parm=LineDelete&lineid=' + record.get("Line_id").toString(),
                        method: 'post',
                        success: function (response, opts) {
                            var status = response.responseText;
                            if (status == "success") {
                                line_store.remove(record);
                                line_grid.getView().refresh();
                            }
                            else {
                                Ext.Msg.alert("Delete Data Faile!");
                            }
                        },
                        failure: function () {
                            Ext.Msg.alert("Delete Data Faile!");
                        }
                    })
                }
            }
        }],        bbar: new Ext.PagingToolbar({
            pageSize:5, 
            store:line_store,
            displayInfo:true,
            displayMsg:'顯示第 {0} 條到 {1} 條記錄,一共 {2} 條',
            emptyMsg:"沒有記錄"
        }),
        
        columns: [
            new Ext.grid.RowNumberer(), //行号
            {header: '<font size=2>Header_ID</font>', dataIndex: 'Header_ID', sortable: true , hidden:true },
            { header: '<font size=2>Line_id</font>', dataIndex: 'Line_id', sortable: false , hidden:true },
            { 
                xtype: 'numbercolumn',
                header: '<font size=2>Seq</font>', 
                dataIndex: 'Seq', sortable: true, 
                format: '0',
                editor: { 
                    xtype: 'numberfield', 
                    minValue: 0,
                    maxValue: 99,
                    allowBlank: false} 
            },
            { header: '<font size=2>Type</font>', dataIndex: 'Type', sortable: false, hidden:true  },
            { header: '<font size=2>Segment1</font>', dataIndex: 'Segment1', sortable: false, editor: { xtype: 'textfield', allowBlank: false} },
            { header: '<font size=2>Segment2</font>', dataIndex: 'Segment2', sortable: false, editor: { xtype: 'textfield', allowBlank: true} },
            { header: '<font size=2>Segment3</font>', dataIndex: 'Segment3', sortable: false, editor: { xtype: 'textfield', allowBlank: true} }
        ]
    });    var intranet_msg_lines = Ext.data.Record.create([
        { name: 'Header_ID', type: 'int' },
        { name: 'Line_id', type: 'int' },
        { name: 'Seq', type: 'int' },
        { name: 'Type', type: 'int' },
        { name: 'Segment1', type: 'string' },
        { name: 'Segment2', type: 'string' },
        { name: 'Segment3', type: 'string' }
    ]);    line_store = new Ext.data.JsonStore({
        data: [],
        fields: [
                    { name: 'Header_ID' },
                    { name: 'Line_id' },
                    { name: 'Seq' },
                    { name: 'Type' },
                    { name: 'Segment1' },
                    { name: 'Segment2' },
                    { name: 'Segment3' }
                ]
    });