在页面加载时,一般初始化数据的列表调用一下store的load方法,但是在firebug中总是可以看见2个链接在加载数据,其中一个正常加载返回数据,但是另一个一摸一样的连接却是一直在加载状态,如图中的第一条始终显示在加载状态,而第三条是一样的连接,他已经加载完了。都是发生在第一次打开页面的时候。
请问下怎样才能避免这种情况的发生。
[b]问题补充:[/b]
[code="java"]
Ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "ticket.do"
}),
autoLoad : false,
baseParams: {
type : 'findAllTicket',
MyTicket:'true'
},
sortInfo: {
field: "CreateTime",
direction: "DESC"
},
remoteSort: true,
reader: new Ext.data.JsonReader({
root: 'results',
totalProperty: 'totalCount',
id: 'ID'
}, [{
name: 'ID'
}, {
name: 'TicketNo'
}, {
name: 'EventName'
}, {
name: 'EventSeverity'
}, {
name: 'Priority'
}, {
name: 'Status'
}, {
name: 'Owner'
}, {
name: 'CreateTime'
}, {
name: 'RequireTime'
}, {
name: 'CompleteTime'
}, {
name: 'CloseTime'
},{
name: 'StatusValue'
}])
});
var cm = new Ext.grid.ColumnModel([{
header: "ID",
autoScroll: true,
dataIndex: 'ID',
sortable: true,
hidden: true
}, {
header: "TicketNo",
width: 70,
sortable: true,
dataIndex: 'TicketNo'
}, {
header: "EventName",
width: 170,
dataIndex: 'EventName',
sortable: true
}, {
header: "EventSeverity",
width: 120,
dataIndex: 'EventSeverity',
sortable: true
}, {
header: "Priority",
width: 40,
dataIndex: 'Priority',
sortable: true
}, {
header: "Ticket State",
width: 80,
dataIndex: 'Status',
sortable: true
}, {
header: "Owner",
width: 120,
dataIndex: 'Owner',
sortable: true
}, {
header: "CreateTime",
width: 120,
dataIndex: 'CreateTime',
sortable: true
}, {
header: "CompleteTime",
width: 120,
dataIndex: 'CompleteTime',
sortable: true
}, {
header: "CloseTime",
width: 120,
dataIndex: 'CloseTime',
sortable: true
}, {
header: "RequireTime",
width: 120,
dataIndex: 'RequireTime',
sortable: true
}]);
ticketPanel = new Ext.grid.GridPanel({
region:'center',
cm: cm,
frame: true,
store: Ds,
tbar: [
{
text: itm_lan_2_0.query,
iconCls:'button_search',
handler: queryTicket
},'-',
{
text: 'Submit',
id:'btn_submit',
handler: submitTicket
},'-',
{
text: 'Forward',
id:'btn_forward',
handler: forwardTicket
},'-',
{
text: 'Back',
id:'btn_back',
handler: backTicket
},'-',
{
text: 'Close',
iconCls: 'Close',
id:'btn_close',
handler: closeTicket
},'-',
{
text: 'View Event',
iconCls: 'button_search',
id:'btn_viewEvent',
handler: function(){
var selectedRows = ticketPanel.getSelections();
if (selectedRows.length > 0) {
var ticketId = selectedRows[0].get('ID');
window.open('event_mgmt.do?ticketId='+ticketId);
}
}
}],
bbar:new Ext.PagingToolbar({
pageSize: 20,
store: Ds,
displayInfo: true,
displayMsg: 'Displaying {0} - {1} of {2}',
emptyMsg: "No topics to display"
}),
autoScroll: true,
loadMask: true,
viewConfig: {
forceFit: false
},
listeners: {
rowclick: function() {
var TicketId='0';
var owner = '';
var status = '';
var selectedRows = ticketPanel.getSelections();
if (selectedRows.length > 0) {
TicketId = selectedRows[0].get('ID');
status = selectedRows[0].get('StatusValue');
owner = selectedRows[0].get('Owner');
}
Ds2.baseParams={TicketId:TicketId};
Ds2.reload();
refreshButtons(owner,status);
}
}
});
Ds.load({
params: {
start: 0,
limit: 20
}
});[/code]
我已经设置了autoLoad:false,而且只有一次load调用。大家看看有什么不对的地方吗?
[b]问题补充:[/b]
大家觉得我可能自己调用了2次load,但是就算是我自己调用的那也应该2次结果一样才对啊,但是现实是总是有一次调用是结束不了的,没有数据返回,那个圈一直在转。
而且我检查过却是没有调用2次,不知道会不会有其他的东西会触发load方法。 :(
[b]问题补充:[/b]
我把
[code="java"]
sortInfo: {
field: "CreateTime",
direction: "DESC"
},
remoteSort: true,
[/code]
注释掉也没用,把autoLoad注释掉也没用
[b]问题补充:[/b]
2次post参数是完全一样的,您可以看一下我上传的图片。但是其中一次就是没有响应。
[b]问题补充:[/b]
不是我某一个页面是这种问题,我和同事做的页面都有这个问题,也许我们是照抄抄错了某个同样的例子。但是不知道错在哪。
怎么样了?二分定位到问题了没?
上代码...
肯定是代码的问题了。仔细检查检查。
应该是你代码多调用了一次load
是不是autoLoad:true然后又store.load了一次
有可能是remoteSort: true,的问题.
你load的时候把dir和sort也作为参数传过去看看
你再点开看看,这2次请求post的参数是否一样.
用万能的二分查错法吧.
先把所有控件都去掉,只剩下store的定义,然后load下看看.