Ext.require([
'erp.util.*'
]);
Ext.define('erp.view.common.datalist.GridPanel2',{
extend: 'Ext.grid.Panel',
alias: 'widget.erpDatalistGridPanel2',
layout : 'fit',
emptyText : '无数据',
columnLines : true,
autoScroll : true,
store: [],
condition1:'',
keyF:'',
ur:'',
page:'',
codeF:'',
pagesize:'',
buttons: [
{
text: '编辑',
handler:function(){
if(!this.up('grid').getSelectionModel().selected.items[0]){
alert("请选择要编辑的行");
return;
}
var data=this.up('grid').getSelectionModel().selected.items[0].data;
var s=this.up('grid').ur+'?formCondition='+this.up('grid').keyF+'IS'+data[this.up('grid').keyF];
var html='';
var grid=this.up('grid');
var win=new Ext.window.Window({
height:400,
width:800,
modal:true,
listeners : {
close : function(){
grid.getColumnsAndStore();
}
},
html:html});
win.show();
}
},{
text: '添加',
handler:function(){
var grid=this.up('grid');
var u='';
if(/\?/.test(grid.ur)){
u+=grid.ur+'&dbfind='+grid.condition1;
}else{
u+=grid.ur+'?dbfind='+grid.condition1;
}
var win=new Ext.window.Window({
height:400,
width:800,
modal:true,
listeners : {
close : function(){
grid.getColumnsAndStore();
}
},
html:''});
win.show();
}
}
],
columns: new Array(),
bodyStyle:'background-color:#f1f1f1;',
BaseUtil: Ext.create('erp.util.BaseUtil'),
//RenderUtil:Ext.create('erp.util.RenderUtil'),
initComponent : function(){
var con=this.BaseUtil.getUrlParam('formCondition');
if(con){
if(/IS/g.test(con)){//datalist页面跳转的参数是带'IS'的,query页面跳转的参数是用'='的
if(/id/g.test(this.codeF)){
con=this.codeF+'='+con.split('IS')[1];
}else{
con=this.codeF+"='"+con.split('IS')[1]+"'";
}
}else{
if(/id/g.test(this.codeF)){
con=this.codeF+'='+con.split('=')[1];
}else{
con=this.codeF+"='"+con.split('=')[1]+"'";
}
}
}
this.condition1=this.condition1==''?con:this.condition1;
this.defaultCondition = this.condition1;//固定条件;从url里面获取
this.caller=this.caller|| this.BaseUtil.getUrlParam('whoami');
this.getCount(this.caller, this.condition1);
this.callParent(arguments);
this.addEvents({
keydown: true
});
} ,
getColumnsAndStore: function(c, d, g, s){
c = c || this.caller;
d = d || this.condition1;
g = g || this.page;
s = s || this.pageSize;
var me = this;
var f = d;
if(me.filterCondition){
if(d == null || d == ''){
f = me.filterCondition;
} else {
f += ' AND ' + me.filterCondition;
}
}
this.setLoading(true);//loading...
Ext.Ajax.request({//拿到grid的columns
url : basePath + 'common/datalist.action',
params: {
caller: c,
condition: f,
page: g,
pageSize: s
},
method : 'post',
callback : function(options,success,response){
me.setLoading(false);
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
showError(res.exceptionInfo);
return;
}
var data = res.data != null ? Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : [];//一定要去掉多余逗号,ie对此很敏感
if(me.columns && me.columns.length > 2){
me.store.loadData(data);
if(me.lastSelected && me.lastSelected.length > 0){//grid刷新后,仍然选中上次选中的record
Ext.each(me.store.data.items, function(item){
if(item.data[keyField] == me.lastSelected[0].data[keyField]){
me.selModel.select(item);
}
});
}
} else {
if(!Ext.isChrome){
Ext.each(res.fields, function(f){
if(f.type == 'date'){
f.dateFormat = 'Y-m-d H:m:s';
}
});
}
var store = Ext.create('Ext.data.Store', {
fields: res.fields,
data: data,
//模糊查询的结果在Ext.Array.filter()方法之后,部分数据被过滤掉,设置为false不调用该方法
//yingp
filterOnLoad: false
});
//处理render
var width=0;
var grid = this;
Ext.Array.each(res.columns, function(column, y) {
width+=column.width;
if(!column.haveRendered && column.renderer != null && column.renderer != ""){
if(!grid.RenderUtil){
grid.RenderUtil = Ext.create('erp.util.RenderUtil');
}
var renderName = column.renderer;
if(contains(column.renderer, ':', true)){
var args = new Array();
Ext.each(column.renderer.split(':'), function(a, index){
if(index == 0){
renderName = a;
} else {
args.push(a);
}
});
if(!grid.RenderUtil.args[renderName]){
grid.RenderUtil.args[renderName] = new Object();
}
grid.RenderUtil.args[renderName][column.dataIndex] = args;
//这里只能用column.dataIndex来标志,不能用x,y,index等,
//grid在render时,checkbox占一列
}
column.renderer = grid.RenderUtil[renderName];
column.haveRendered = true;
}
});
if(width 1表示grid的columns已存在,没必要remove再add
d.suspendLayout = true;
d.removeAll();
d.add(columns);
}
if (store) {
this.bindStore(store);
} else {
this.getView().refresh();
}
if (columns) {
d.suspendLayout = false;
this.forceComponentLayout();
}
this.fireEvent("reconfigure", this);
},
getCondition: function(){
var condition = '';
if(!Ext.isEmpty(this.defaultCondition)) {
condition = this.defaultCondition;
}
if(!Ext.isEmpty(this.filterCondition)) {
if(condition == '') {
condition = this.filterCondition;
} else {
condition = '(' + condition + ') AND (' + this.filterCondition + ')';
}
}
return condition.replace(/=/g, '%3D');
}
});