我正在使用datefields和comboboxes来选择加载商店。当商店加载到网格中时,我有一个分页工具栏。到目前为止一切都很好。
当用户点击下一页时,pagingtoolbar不会从日期字段中发送数据。我读了一些关于baseparams的内容,但这不起作用。
我使用EXTJS 4.1
这是我的商店:
NL.commListDetails = new Ext.data.Store({
model: 'stepDetails',
pageSize: 20,
loadMask: false,
sortOnLoad: true,
proxy: {
type: 'ajax',
url: detailURL,
startParam: '',
limitParam: '',
pageParam: '',
reader: {
type: 'json',
root: 'slaevents',
totalProperty: 'slaevents[0].totalCount'
}
},
baseParams: {fromDate:NL.startDate},
autoLoad: false
});
这是分页工具栏
bbar: Ext.create('Ext.PagingToolbar', {
store: NL.commListDetails,
displayInfo: true,
displayMsg: 'Displaying record {0} - {1} of {2}',
emptyMsg: "No records to display",
}),
我需要发送fromDate,endDate和分页。两者都可以在NL.startDate和NL.endDate中使用。当我点击下一页时如何发送这个?
答案 0 :(得分:1)
商店没有baseParams配置。要发送额外的参数,您应该为ajax代理使用extraParams配置。
proxy: {
type: 'ajax',
....
extraParams: {fromDate:NL.startDate},
..
},
在创建商店时定义参数也意味着它们是静态的,所以他们赢了;如果修改了日期字段或组合框,则会改变...
所以解决方法是在组合框或日期字段上侦听更改事件并重置额外的参数:
change: function(this,value){
NL.commListDetails.getProxy().getExtraParams().comboName = value;
}
修改强> 我纠正了。有一个baseParams,但它在元素加载器上,只有在直接调用load时才会调用,我认为使用loadPage的分页工具栏不是这种情况。我可能在这个问题上错了,但我正在使用extraparams并且它工作正常。