读书人

extjs中store.on(amp;#x27;loadamp;#x27;fun

发布时间: 2013-09-07 14:12:44 作者: rapoo

extjs中store.on('load',function(){})的问题
本帖最后由 showbo 于 2013-08-20 21:12:07 编辑 先贴代码:

    onMailBoxTabCellClick: function(tableview, td, cellIndex, record, tr, rowIndex, e, eOpts) {
var store =Ext.getCmp('checkGrid').store;
Ext.Ajax.request({
url: "../../gettext",
method: "POST",
params: { messageid: record.raw.messageid}, //发送的参数
success: function (response, opts) {
var mailcontent=Ext.getCmp('mailcontent');
mailcontent.setValue(response.responseText);


},
failure: function () { Ext.Msg.alert("提示", "失败"); }
});
store.load({
params:{
messageid:record.raw.messageid
}
});
var mailcheck=Ext.getCmp('checkbox');
var mailsender=Ext.getCmp('sender');
mailsender.setText(record.raw.sender);
var maildate=Ext.getCmp('sendTime');
maildate.setText(record.raw.sendTime);
var mailTitle=Ext.getCmp('mailTitle');
mailTitle.setText(record.raw.subject);
var deleteId=Ext.getCmp('deleteId');
deleteId.setValue(record.raw.messageid);


var form1=Ext.getCmp('form1');
form1.hide();
var g= Ext.getCmp('checkGrid');
var gstore= g.store;
store.on('load',function(){
if(gstore.getCount()===0){
g.hide();
}else{
g.show();
}
mailcheck.show();
if(record.raw.isread==='N'){
Ext.getCmp('mailBoxTab').store.load();
}
alert(record.raw.isread);////////////////

});

}


这是gridpanel点击事件,如果发现点击的记录的N就刷新,可是遇到问题的我第一条记录弹一次,点第二次时候弹两次...
比如我依次点击三条记录对应的isread的Y,N,Y
则弹出窗口分别是
Y
Y,N
Y,N,Y

为什么?
[解决办法]
因为点击一次就绑定一次store的load事件,要先卸载原来的load事件再添加

function storeLoad(){
if(gstore.getCount()===0){
g.hide();
}else{
g.show();


}
mailcheck.show();
if(record.raw.isread==='N'){
Ext.getCmp('mailBoxTab').store.load();
}
alert(record.raw.isread);////////////////

}

store.un('load',storeLoad).on('load',storeLoad);//////

读书人网 >Ajax

热点推荐