使用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' }
]
});
如果使用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' }
]
});
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货