johnlovely 2009-08-31 03:35
浏览 374
已采纳

Ext store 被调用两次的问题

在页面加载时,一般初始化数据的列表调用一下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'
}])
});

  1. var cm = new Ext.grid.ColumnModel([{
  2. header: "ID",
  3. autoScroll: true,
  4. dataIndex: 'ID',
  5. sortable: true,
  6. hidden: true
  7. }, {
  8. header: "TicketNo",
  9. width: 70,
  10. sortable: true,
  11. dataIndex: 'TicketNo'
  12. }, {
  13. header: "EventName",
  14. width: 170,
  15. dataIndex: 'EventName',
  16. sortable: true
  17. }, {
  18. header: "EventSeverity",
  19. width: 120,
  20. dataIndex: 'EventSeverity',
  21. sortable: true
  22. }, {
  23. header: "Priority",
  24. width: 40,
  25. dataIndex: 'Priority',
  26. sortable: true
  27. }, {
  28. header: "Ticket State",
  29. width: 80,
  30. dataIndex: 'Status',
  31. sortable: true
  32. }, {
  33. header: "Owner",
  34. width: 120,
  35. dataIndex: 'Owner',
  36. sortable: true
  37. }, {
  38. header: "CreateTime",
  39. width: 120,
  40. dataIndex: 'CreateTime',
  41. sortable: true
  42. }, {
  43. header: "CompleteTime",
  44. width: 120,
  45. dataIndex: 'CompleteTime',
  46. sortable: true
  47. }, {
  48. header: "CloseTime",
  49. width: 120,
  50. dataIndex: 'CloseTime',
  51. sortable: true
  52. }, {
  53. header: "RequireTime",
  54. width: 120,
  55. dataIndex: 'RequireTime',
  56. sortable: true
  57. }]);
  58. ticketPanel = new Ext.grid.GridPanel({
  59. region:'center',
  60. cm: cm,
  61. frame: true,
  62. store: Ds,
  63. tbar: [
  64. {
  65. text: itm_lan_2_0.query,
  66. iconCls:'button_search',
  67. handler: queryTicket
  68. },'-',
  69. {
  70. text: 'Submit',
  71. id:'btn_submit',
  72. handler: submitTicket
  73. },'-',
  74. {
  75. text: 'Forward',
  76. id:'btn_forward',
  77. handler: forwardTicket
  78. },'-',
  79. {
  80. text: 'Back',
  81. id:'btn_back',
  82. handler: backTicket
  83. },'-',
  84. {
  85. text: 'Close',
  86. iconCls: 'Close',
  87. id:'btn_close',
  88. handler: closeTicket
  89. },'-',
  90. {
  91. text: 'View Event',
  92. iconCls: 'button_search',
  93. id:'btn_viewEvent',
  94. handler: function(){
  95. var selectedRows = ticketPanel.getSelections();
  96. if (selectedRows.length > 0) {
  97. var ticketId = selectedRows[0].get('ID');
  98. window.open('event_mgmt.do?ticketId='+ticketId);
  99. }
  100. }
  101. }],
  102. bbar:new Ext.PagingToolbar({
  103. pageSize: 20,
  104. store: Ds,
  105. displayInfo: true,
  106. displayMsg: 'Displaying {0} - {1} of {2}',
  107. emptyMsg: "No topics to display"
  108. }),
  109. autoScroll: true,
  110. loadMask: true,
  111. viewConfig: {
  112. forceFit: false
  113. },
  114. listeners: {
  115. rowclick: function() {
  116. var TicketId='0';
  117. var owner = '';
  118. var status = '';
  119. var selectedRows = ticketPanel.getSelections();
  120. if (selectedRows.length > 0) {
  121. TicketId = selectedRows[0].get('ID');
  122. status = selectedRows[0].get('StatusValue');
  123. owner = selectedRows[0].get('Owner');
  124. }
  125. Ds2.baseParams={TicketId:TicketId};
  126. Ds2.reload();
  127. refreshButtons(owner,status);
  128. }
  129. }
  130. });
  131. Ds.load({
  132. params: {
  133. start: 0,
  134. limit: 20
  135. }
  136. });[/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]
不是我某一个页面是这种问题,我和同事做的页面都有这个问题,也许我们是照抄抄错了某个同样的例子。但是不知道错在哪。

展开全部

  • 写回答

8条回答 默认 最新

  • iteye_10013 2009-09-02 01:33
    关注

    怎么样了?二分定位到问题了没?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部