日期:2014-05-16  浏览次数:20506 次

extjs tabpanel右键菜单事件重复问题
在点右键菜单中的Remove Contact后会出现重复,在TABPANEL中每关闭一次PANEL,重复就会增加一次。
找问题很长时间,实在找不出来,特发贴请各位帮忙看看!
joblist 代码;
var createColumns = function(finish, start) {

var columns = [ {
dataIndex : 'JOBNO',
text : 'JOBNO',
width : 160,
filter : {
type : 'string'
}
}, {
dataIndex : 'ITEMNO',
text : 'ITEMNO',
}, {
dataIndex : 'CODE',
text : 'CODE',
filter : true,
width : 100
}, {
dataIndex : 'BDESC',
text : 'BDESC',
width : 200,
filter : true
}, {
dataIndex : 'CBDESC',
text : 'CBDESC',
width : 200,
filter : true
}, {
dataIndex : 'PLOT',
text : 'PLOT',

}, {
dataIndex : 'QTY',
text : 'QTY',
filter : {
type : 'numeric'
},
}, {
dataIndex : 'CQTY',
text : 'CQTY',
filter : {
type : 'numeric'
}
} ];

return columns.slice(start || 0, finish);
};

var filters = {
ftype : 'filters',
type : 'list',
encode : true,
local : false,
filters : [ {
type : 'boolean',
dataIndex : 'visible'
} ]
};
Ext.Loader.setPath('Ext.ux', './ExtJS/ux');
Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.ux.grid.FiltersFeature',
'Ext.toolbar.Paging', 'Ext.ux.ajax.JsonSimlet',
'Ext.ux.ajax.SimManager' ]);

Ext.define('HT.view.job.jobList', {
extend : 'Ext.grid.Panel',
alias : 'widget.jobList',
store : 'job.jobStore',
loadMask : true,
initComponent : function() {
Ext.apply(this, {
columns : createColumns(8),
features : [ filters ],
dockedItems : [ Ext.create('Ext.toolbar.Paging', {
dock : 'bottom',
store : this.store,
items : [ '-', {
xtype : 'button',
text : 'All Filter Data',
pressed : true,
enableToggle : true,
tooltip : 'Get Filter Data for Grid',
}, {
xtype : 'button',
text : 'Clear Filter Data',
pressed : true,
enableToggle : true,
} ]
}) ],
emptyText : 'No Matching Records',
});

this.addEvents('removeitem');
this.actions = {
test : new Ext.Action({
text : 'Remove Contact',
handler : function() {
this.fireEvent('removeitem', this.getSelected());
},
scope : this
})
};
var nodemenu = new Ext.menu.Menu({
floating : true,
items : [ this.actions.test ]
});
this.on({
'itemcontextmenu' : function(menutree, record, items, index, e) {
e.preventDefault();
e.stopEvent();
nodemenu.showAt(e.getXY());
return false;
}
}), this.callParent(arguments);
},
getSelected : function() {
var sm = this.getSelectionModel();
var rs = sm.getSelection();
if (rs.length) {
return rs[0];
}
return null;
}
});
jobview 代码:
Ext.define('HT.view.job.jobView', {
extend : 'Ext.Panel',
title : 'Grid Filters Example',
alias : 'widget.jobView',
// height: 400,
// width: 875,
layout : 'fit',
items : [ {
xtype : 'jobList',
}]
});

jobstore 代码:
var url = {
remote : 'test/testxml.action'
};
Ext.define('HT.store.job.jobStore', {
extend : 'Ext.data.Store',
model : 'HT.model.job.jobModel',
// autoLoad : true,
// pageSize : 20,
proxy : {
type : 'ajax',
url : url.remote,
reader : {
type : 'xml',
record : 'job',
totalProperty : 'TotalResults'
}
},
});
jobController 代码:
Ext.define('HT.controller.jobController', {// 定义类
exte