Ext.define('erp.view.pm.mps.MrpReplaceGrid',{
extend: 'Ext.grid.Panel',
alias: 'widget.MrpReplaceGrid',
region: 'south',
layout : 'fit',
id: 'grid',
emptyText : $I18N.common.grid.emptyText,
columnLines : true,
autoScroll : true,
store: [],
columns: [],
bodyStyle: 'background-color:#f1f1f1;',
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
})],
GridUtil: Ext.create('erp.util.GridUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
necessaryFields: new Array(),
necessaryField:'',
detno: '',//编号字段
keyField: '',//主键字段
mainField: '',//对应主表主键的字段
dbfinds: [],
caller: null,
condition: null,
initComponent : function(){
var condition = this.condition;
if(!condition){
var urlCondition = this.BaseUtil.getUrlParam('gridCondition');
urlCondition = urlCondition == null || urlCondition == "null" ? "" : urlCondition;
gridCondition = (gridCondition == null || gridCondition == "null") ? "" : gridCondition;
gridCondition = gridCondition + urlCondition;
gridCondition = gridCondition.replace(/IS/g, "=");
/*if(gridCondition.search(/!/) != -1){
gridCondition = gridCondition.substring(0, gridCondition.length - 4);
}*/
condition = gridCondition;
}
var gridParam = {caller: this.caller || caller, condition: condition};
this.getGridColumnsAndStore(this, 'common/singleGridPanel.action', gridParam, "");//从后台拿到gridpanel的配置及数据
this.callParent(arguments);
},
getGridColumnsAndStore:function(grid,url,param){
var me = this;
grid.setLoading(true);
Ext.Ajax.request({//拿到grid的columns
url : basePath + url,
params: param,
method : 'post',
callback : function(options,success,response){
grid.setLoading(false);
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo){
showError(res.exceptionInfo);return;
}
if(res.columns){
var data = [];
if(!res.data || res.data.length == 2){
/* var o=new Object();
o.mr_prodcode='无数据';
o.mr_repcode='无数据';
data.push(o);*/
} else {
data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));
}
//store
var store =Ext.create('Ext.data.Store', {
fields: res.fields,
data: data
});
//view
if(grid.selModel.views == null){
grid.selModel.views = [];
}
if(res.dbfinds&&res.dbfinds.length > 0){
grid.dbfinds = res.dbfinds;
}
Ext.each(res.columns, function(column, y){
me.setLogicType(grid, column);
});
grid.reconfigure(store, res.columns);
} else {
grid.hide();
var form = Ext.ComponentQuery.query('form')[0];
me.updateFormPosition(form);//字段较少时,修改form布局
}
}
});
},
setLogicType: function(grid, column){
var logic = column.logic;
if(logic != null){
if(logic == 'detno'){
grid.detno = column.dataIndex;
column.width = 40;
column.renderer = function(val, meta) {
meta.tdCls = Ext.baseCSSPrefix + 'grid-cell-special';
return val;
};
} else if(logic == 'keyField'){
grid.keyField = column.dataIndex;
} else if(logic == 'mainField'){
grid.mainField = column.dataIndex;
}else if(logic == 'orNecessField'){
if(!grid.orNecessField){
grid.orNecessField = new Array();
}
grid.orNecessField.push(column.dataIndex);
}else if(logic == 'necessaryField'){
grid.necessaryField = column.dataIndex;
if(!grid.necessaryFields){
grid.necessaryFields = new Array();
}
grid.necessaryFields.push(column.dataIndex);
if(!column.haveRendered){
column.renderer = function(val, meta, record, x, y, store, view){
var c = this.columns[y];
if(val != null && val.toString().trim() != ''){
if(c.xtype == 'datecolumn'){
val = Ext.Date.format(val, 'Y-m-d');
}
return val;
} else {
if(c.xtype == 'datecolumn'){
val = '';
}
return '
' +
'' + val + '';
}
};
}
} else if(logic == 'groupField'){
grid.groupField = column.dataIndex;
}
}
},
setReadOnly: function(bool){
this.readOnly = bool;
},
reconfigure: function(store, columns){
var d = this.headerCt;
if (this.columns.length <= 1 && columns) {
d.suspendLayout = true;
d.removeAll();
d.add(columns);
}
if (store) {
try{
this.bindStore(store);
} catch (e){
}
} else {
this.getView().refresh();
}
if (columns) {
d.suspendLayout = false;
this.forceComponentLayout();
}
this.fireEvent("reconfigure", this);
},
listeners: {
afterrender: function(grid){
var me = this;
if(Ext.isIE){
document.body.attachEvent('onkeydown', function(){
if(window.event.ctrlKey && window.event.keyCode == 67){//Ctrl + C
var e = window.event;
if(e.srcElement) {
window.clipboardData.setData('text', e.srcElement.innerHTML);
}
}
});
} else {
document.body.addEventListener("mouseover", function(e){
if(Ext.isFF5){
e = e || window.event;
}
window.mouseoverData = e.target.value;
});
document.body.addEventListener("keydown", function(e){
if(Ext.isFF5){
e = e || window.event;
}
if(e.ctrlKey && e.keyCode == 67){
me.copyToClipboard(window.mouseoverData);
}
if(e.ctrlKey && e.keyCode == 67){
me.copyToClipboard(window.mouseoverData);
}
});
}
}
}
});