Ext.define('erp.util.GridUtil',{
/**
* 取grid配置及数据
* 包括dbfind的配置
* @param no 需要自动编号的字段
*/
getGridColumnsAndStore: function(grid, url, param, no){
var me = this;
grid.setLoading(true);
Ext.Ajax.request({//拿到grid的columns
url : basePath + url,
params: param,
async: (grid.sync ? false : true),
method : 'post',
callback : function(options,success,response){
grid.setLoading(false);
if (!response) return;
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo){
showError(res.exceptionInfo);return;
}
if(res.columns){
var limits = res.limits, limitArr = new Array();
if(limits != null && limits.length > 0) {//权限外字段
limitArr = Ext.Array.pluck(limits, 'lf_field');
}
Ext.each(res.columns, function(column, y){
// column有取别名
if(column.dataIndex.indexOf(' ') > -1) {
column.dataIndex = column.dataIndex.split(' ')[1];
}
//power
if(limitArr.length > 0 && Ext.Array.contains(limitArr, column.dataIndex)) {
column.hidden = true;
}
//renderer
me.setRenderer(grid, column);
//logictype
me.setLogicType(grid, column, {
headerColor: res.necessaryFieldColor
});
});
//data
var data = [];
if(!res.data || res.data.length == 2){
if (grid.buffered) {
me.add10EmptyData(grid.detno, data);
me.add10EmptyData(grid.detno, data);//添加20条空白数据
} else {
grid.on('reconfigure', function(){// 改为Grid加载后再添加空行,节约200~700ms
me.add10EmptyItems(grid, 40, false);
});
}
} else {
data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));
}
//store
var store = me.setStore(grid, res.fields, data, grid.groupField, grid.necessaryField);
//view
if(grid.selModel && grid.selModel.views == null){
grid.selModel.views = [];
}
//dbfind
if(res.dbfinds && res.dbfinds.length > 0){
grid.dbfinds = res.dbfinds;
}
//reconfigure
if(grid.sync) {//同步加载的Grid
grid.reconfigure(store, res.columns);
grid.on('afterrender', function(){
me.setToolbar(grid, grid.columns, grid.necessaryField, limitArr);
});
} else {
//toolbar
if (grid.generateSummaryData === undefined) {// 改为Grid加载后再添加合计,节约60ms
me.setToolbar(grid, res.columns, grid.necessaryField, limitArr);
}
grid.reconfigure(store, res.columns);
}
if(grid.buffered) {//缓冲数据的Grid
grid.verticalScroller = Ext.create('Ext.grid.PagingScroller', {
activePrefetch: false,
store: store
});
store.guaranteeRange(0, Math.min(store.pageSize, store.prefetchData.length) - 1);
}
var form = Ext.ComponentQuery.query('form');
if(form && form.length > 0){
grid.readOnly = form[0].readOnly;//grid不可编辑
}
} else {
grid.hide();
var form = Ext.ComponentQuery.query('form')[0];
if(form && !form.isStatic) {
if(form.items.items.length == 0) {
form.on('afterload', function(){
me.updateFormPosition(form);//字段较少时,修改form布局
});
} else {
me.updateFormPosition(form);//字段较少时,修改form布局
}
}
}
}
});
},
setRenderer: function(grid, column){
if(!column.haveRendered){
if(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.renderer = grid.RenderUtil[renderName];
column.haveRendered = true;
} else if(column.readOnly){
column.renderer = function(val, meta, record, x, y, store, view){
meta.style = "background: #e0e0e0;";
var c = this.columns[y];
if(val != null && val.toString().trim() != ''){
if(c.xtype == 'datecolumn' && typeof val === 'object'){
val = Ext.Date.format(val, 'Y-m-d');
} else if(c.xtype == 'numbercolumn' && val.toString().trim() == '0') {
val = '';
}
return val;
} else {
if(c.xtype == 'datecolumn'){
val = '';
}
return val;
}
}
column.haveRendered = true;
}
}
},
setLogicType: function(grid, column, headerCss){
var logic = column.logic;
if(logic != null){
if(logic == 'detno'){
grid.detno = column.dataIndex;
column.width = 40;
column.align = 'center';
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' && typeof val === 'object'){
val = Ext.Date.format(val, 'Y-m-d');
} else if(c.xtype == 'numbercolumn') {
val = Ext.util.Format.number(val, c.format || '0,000.00');
} else if(c.xtype == 'combocolumn'){
if(!Ext.isEmpty(val)) {
var g = view.ownerCt,h = g.columns[y],f = h.field, k;
if ((k = (h.editor || h.filter)) && k.store) {
var t = null,dd = k.store.data;
t = Ext.Array.filter(dd, function(d, index){
return d.value == val;
});
if (t && t.length > 0) {
return t[0].display;
}
} else if (f) {
if(f.store) {
var t = f.store.findRecord('value', val);
if (t)
return t.get('display');
} else
return f.rawValue;
}
return val;
}
}
return val;
} else {
if(c.xtype == 'datecolumn'){
val = '';
}
return '
' +
'' + val + '';
}
};
}
if(headerCss.headerColor)
column.style = 'color:#' + headerCss.headerColor;
} else if(logic == 'groupField'){
grid.groupField = column.dataIndex;
}
}
},
setStore: function(grid, fields, data, groupField, necessaryField){
Ext.each(fields, function(f){
if(f.name.indexOf(' ') > -1) {// column有取别名
f.name = f.name.split(' ')[1];
}
if(!Ext.isChrome){
if(f.type == 'date'){
f.dateFormat = 'Y-m-d H:m:s';
}
}
});
var modelName = 'ext-model-' + grid.id;
Ext.define(modelName, {
extend: 'Ext.data.Model',
fields: fields
});
var config = {
model: modelName,
groupField: groupField,
getSum: function(records, field) {
if (arguments.length < 2) {
return 0;
}
var total = 0,
i = 0,
len = records.length;
if(necessaryField) {
for (; i < len; ++i) {//重写getSum,grid在合计时,只合计填写了必要信息的行
var necessary = records[i].get(necessaryField);
if(necessary != null && necessary != ''){
total += records[i].get(field);
}
}
} else {
for (; i < len; ++i) {
total += records[i].get(field);
}
}
return total;
},
getCount: function() {
if(necessaryField) {
var count = 0;
Ext.each(this.data.items, function(item){//重写getCount,grid在合计时,只合计填写了必要信息的行
if(item.data[necessaryField] != null && item.data[necessaryField] != ''){
count++;
}
});
return count;
}
return this.data.items.length;
}
};
if(grid.buffered) {//grid数据缓存
config.buffered = true;
config.pageSize = 200;
config.purgePageCount = 0;
config.proxy = {
type: 'memory'
};
} else {
config.data = data;
}
var store = Ext.create('Ext.data.Store', config);
store.each(function(item, x){
item.index = x;
});
if(grid.buffered) {
var ln = data.length, records = [], i = 0;
for (; i < ln; i++) {
records.push(Ext.create(modelName, data[i]));
}
store.cacheRecords(records);
}
return store;
},
setToolbar: function(grid, columns, necessaryField, limitArr){
var items = [];
var bool = true;
if(!grid.dockedItems)
return;
Ext.each(grid.dockedItems.items, function(item){
if(item.dock == 'bottom' && item.items){//bbar已存在
bool = false;
}
});
if(bool){
Ext.each(columns, function(column){
if(limitArr.length == 0 || !Ext.Array.contains(limitArr, column.dataIndex)) {
if(column.summaryType == 'sum'){
items.push('-',{
id: column.dataIndex + '_sum',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(sum):0'
});
} else if(column.summaryType == 'average') {
items.push('-',{
id: column.dataIndex + '_average',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(average):0'
});
} else if(column.summaryType == 'count') {
items.push('-',{
id: column.dataIndex + '_count',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(count):0'
});
} else if(column.summaryType == 'results') {
items.push('-',{
id: column.dataIndex + '_results',
itemId: column.dataIndex,
xtype: 'tbtext',
text: '筛选结果:0条'
});
}
}
if(column.dataIndex == necessaryField){
column.renderer = function(val){
if(val != null && val.toString().trim() != ''){
return val;
} else {
return '
' +
'' + val + '';
}
};
}
});
grid.addDocked({
xtype: 'toolbar',
dock: 'bottom',
items: items
});
} else {
var bars = Ext.ComponentQuery.query('erpToolbar');
if(bars.length > 0){
Ext.each(columns, function(column){
if(column.summaryType == 'sum'){
bars[0].add('-');
bars[0].add({
id: column.dataIndex + '_sum',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(sum):0'
});
} else if(column.summaryType == 'average') {
bars[0].add('-');
bars[0].add({
id: column.dataIndex + '_average',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(average):0'
});
} else if(column.summaryType == 'count') {
bars[0].add('-');
bars[0].add({
id: column.dataIndex + '_count',
itemId: column.dataIndex,
xtype: 'tbtext',
text: column.text + '(count):0'
});
}
});
}
}
},
updateFormPosition: function(form){
var height = window.innerHeight;
var width = window.innerWidth;
if(Ext.isIE){
height = screen.height*0.75;
width = screen.width*0.75;
}
if(form){
if(form.items.items.length > 12){
form.setHeight(height);
} else {//少于12个字段的单form页面,强制居中显示
if(form.items.items == 0){
form.on('afterlayout', function(){
if(0 < form.items.items.length <= 12){
Ext.each(form.items.items, function(item){
if(item.columnWidth >= 0.25 && item.columnWidth < 0.6){
item.setWidth(width*0.65*0.5);
item.columnWidth = 0.5;
} else if(item.columnWidth >= 0.6) {
item.setWidth(width*0.65);
item.columnWidth = 1;
}
});
}
});
} else {
Ext.each(form.items.items, function(item){
if(item.columnWidth >= 0.25 && item.columnWidth < 0.6){
item.setWidth(width*0.65*0.5);
item.columnWidth = 0.5;
} else if(item.columnWidth >= 0.6) {
item.setWidth(width*0.65);
item.columnWidth = 1;
}
});
}
form.setHeight('60%');
form.setWidth('70%');
form.el.applyStyles('margin:10% auto;border-width: 0 1px 1px 1px;');
}
}
},
loadNewStore: function(grid, param){
var me = this;
grid.setLoading(true);//loading...
Ext.Ajax.request({//拿到grid的columns
url : basePath + "common/loadNewGridStore.action",
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;
}
var data = res.data;
if(!data || data.length == 0){
grid.store.removeAll();
me.add10EmptyItems(grid);
} else {
if(grid.buffered) {
var ln = data.length, records = [], i = 0;
for (; i < ln; i++) {
records.push(Ext.create(grid.store.model.getName(), data[i]));
}
grid.store.purgeRecords();
grid.store.cacheRecords(records);
grid.store.totalCount = ln;
grid.store.guaranteedStart = -1;
grid.store.guaranteedEnd = -1;
var a = grid.store.pageSize - 1;
a = a > ln - 1 ? ln - 1 : a;
grid.store.guaranteeRange(0, a);
} else {
grid.store.loadData(data);
}
}
//自定义event
grid.addEvents({
storeloaded: true
});
grid.fireEvent('storeloaded', grid, data);
}
});
},
/**
* 从index行开始,往grid里面加十空行
* @param detno 编号字段
* @param data 需要添加空白数据的data
*/
add10EmptyData: function(detno, data){
if(detno){
var index = data.length == 0 ? 0 : Number(data[data.length-1][detno]);
for(var i=0;i<20;i++){
var o = new Object();
o[detno] = index + i + 1;
data.push(o);
}
} else {
for(var i=0;i<20;i++){
var o = new Object();
data.push(o);
}
}
},
/**
* 从index行开始,往grid里面加十空行
* @param grid
*/
add10EmptyItems: function(grid, count, append){
var store = grid.store,
items = store.data.items, arr = new Array();
var detno = grid.detno;
count = count || 10;
append = append === undefined ? true : false;
if(typeof grid.sequenceFn === 'function')
grid.sequenceFn.call(grid, count);
else {
if(detno){
var index = items.length == 0 ? 0 : Number(store.last().get(detno));
for(var i=0;i < count;i++ ){
var o = new Object();
o[detno] = index + i + 1;
arr.push(o);
}
} else {
for(var i=0;i < count;i++ ){
var o = new Object();
arr.push(o);
}
}
store.loadData(arr, append);
var i = 0;
store.each(function(item, x){
if(item.index) {
i = item.index;
} else {
if (i) {
i++;
item.index = i;
} else {
item.index = x;
}
}
});
}
},
isBlank: function(grid, data) {
if(typeof grid.isEmptyRecord === 'function') {
return grid.isEmptyRecord.call(grid, data);
} else {
var ff = grid.necessaryFields,bool = true;
var of = grid.orNecessField, c;
if(ff) {
bool = false;
Ext.each(ff, function(f) {
c = grid.down('gridcolumn[dataIndex=' + f + ']');
if(Ext.isEmpty(data[f]) || (data[f] == 0 && c
&& c.xtype != 'ynnvcolumn' && c.xtype != 'yncolumn')) {
bool = true;return;
}
});
} else if(of){
Ext.each(of,function(f){
if(!Ext.isEmpty(data[f]) && data[f] != 0){
bool = false;
return;
}
});
} else {
if(!grid.necessaryField || !Ext.isEmpty(data[grid.necessaryField])) {
bool = false;
}
}
return bool;
}
},
isEmpty: function(grid) {
if(grid == null){
grid = Ext.getCmp('grid');
}
var me = this, i = 0, items = grid.getStore().data.items, l = items.length;
for(;i < l;i++) {
if(!me.isBlank(grid, items[i].data)) {
return false;
}
}
return true;
},
isDirty: function(grid) {
if(grid == null){
grid = Ext.getCmp('grid');
}
var i = 0, items = grid.getStore().data.items, l = items.length;
for(;i < l;i++) {
if( items[i].dirty ) {
return true;
}
}
return false;
},
/**
* 获取grid已编辑但部分必填字段没填写的行,并提示
*/
getUnFinish: function(grid) {
var me = this, cols = {};
Ext.Array.each(grid.columns, function(c){
if(c.dataIndex)
cols[c.dataIndex] = c.text || c.header;
});
var errs = [];
grid.store.each(function(record){
if(record.dirty && me.isBlank(grid, record.data)) {
var ff = grid.necessaryFields, s = '';
if(ff) {
Ext.each(ff, function(f) {
c = grid.down('gridcolumn[dataIndex=' + f + ']');
if(c.logic != 'ignore' && (Ext.isEmpty(record.get(f)) || (record.get(f) == 0 && c
&& c.xtype != 'ynnvcolumn' && c.xtype != 'yncolumn'))) {
s += ' ' + (c.text || c.header) + ' ';
}
});
} else if(grid.necessaryField) {
var f = grid.necessaryField, c = grid.down('gridcolumn[dataIndex=' + f + ']');
if(c.logic != 'ignore' && (Ext.isEmpty(record.get(f)) || (record.get(f) == 0 && c
&& c.xtype != 'ynnvcolumn' && c.xtype != 'yncolumn'))) {
s += ' ' + (c.text || c.header) + ' ';
}
}
if(s.length > 0)
errs.push((grid.detno ? ('行: ' + record.get(grid.detno) + ', ') : '') + s);
}
});
return errs.join('
');
},
/**
* 获取grid已保存但部分必填字段没填写的行,并提示
*/
getInvalid: function(grid) {
if(grid.keyField) {
var me = this, cols = {};
Ext.Array.each(grid.columns, function(c){
if(c.dataIndex)
cols[c.dataIndex] = c.text || c.header;
});
var errs = [];
grid.store.each(function(record){
var key = record.get(grid.keyField);
if(key && key > 0 && me.isBlank(grid, record.data)) {
var ff = grid.necessaryFields, s = '';
if(ff) {
Ext.each(ff, function(f) {
c = grid.down('gridcolumn[dataIndex=' + f + ']');
if(c.logic != 'ignore' && (Ext.isEmpty(record.get(f)) || (record.get(f) == 0 && c
&& c.xtype != 'ynnvcolumn' && c.xtype != 'yncolumn'))) {
s += ' ' + (c.text || c.header) + ' ';
}
});
} else if(grid.necessaryField) {
var f = grid.necessaryField, c = grid.down('gridcolumn[dataIndex=' + f + ']');
if(c.logic != 'ignore' && (Ext.isEmpty(record.get(f)) || (record.get(f) == 0 && c
&& c.xtype != 'ynnvcolumn' && c.xtype != 'yncolumn'))) {
s += ' ' + (c.text || c.header) + ' ';
}
}
if(s.length > 0)
errs.push((grid.detno ? ('行: ' + record.get(grid.detno) + ', ') : '') + s);
}
});
return errs.join('
');
}
return null;
},
/**
* 拿到grid里面要提交的数据
*/
getGridStore: function(grid){
if(grid == null){
grid = Ext.getCmp('grid');
}
var me = this,
jsonGridData = new Array();
var form = Ext.getCmp('form');
if(grid!=null){
var s = grid.getStore().data.items;//获取store里面的数据
var dd;
for(var i=0;i' + c.text + ' ';
}
}
});
}
if(s != '')
msg += s;
}
}
if(msg != '' && msg != ';'){//明细行被修改过哦
msg = "明细行" + msg.substring(0, msg.length-1) + "已编辑过";
} else {
msg = '';
}
return msg;
},
getRecordByCode: function(param){
Ext.Ajax.request({
url : basePath + 'common/getRecordByCode.action',
params: param,
method : 'post',
callback : function(options,success,response){
//var res = new Ext.decode(response.responseText);
}
});
},
onGridItemClick: function(selModel, record, id){
var me = this.GridUtil || this;
var grid = selModel.ownerCt;
if(grid && !grid.readOnly && !grid.NoAdd){
var index = grid.store.indexOf(record);
if(index == grid.store.indexOf(grid.store.last())){
me.add10EmptyItems(grid);//就再加10行
}
var btn = grid.down('erpDeleteDetailButton');
if(btn)
btn.setDisabled(false);
btn = grid.down('erpAddDetailButton');
if(btn)
btn.setDisabled(false);
btn = grid.down('copydetail');
if(btn)
btn.setDisabled(false);
btn = grid.down('pastedetail');
if(btn)
btn.setDisabled(false);
btn = grid.down('updetail');
if(btn)
btn.setDisabled(false);
btn = grid.down('downdetail');
if(btn)
btn.setDisabled(false);
if(grid.down('tbtext[name=row]')){
grid.down('tbtext[name=row]').setText(index);
}
}
},
onGridItemClickForEditGrid: function(selModel, record, id){
var grid = id == null ? Ext.getCmp('grid') : Ext.getCmp(id);
var index = null;
if(grid.detno){
index = record.data[grid.detno];
index = index == null ? (record.index + 1) : index;
if(index.toString() == 'NaN'){
index = '';
}
if(index == grid.store.data.items[grid.store.data.items.length-1].data[grid.detno]){//如果选择了最后一行
this.add10EmptyItems(grid);//就再加10行
}
} else {
index = record.index + 1;
if(index.toString() == 'NaN'){
index = '';
}
if(index == grid.store.data.items[grid.store.data.items.length-1].index + 1){//如果选择了最后一行
this.add10EmptyItems(grid);//就再加10行
}
}
// var btn = grid.down('erpDeleteButton');
// btn.setDisabled(false);
},
deleteDetailForEditGrid:function(btn){
var grid = btn.ownerCt.ownerCt;
var records = grid.selModel.getSelection();
if(records.length > 0){
if(grid.keyField){
if(records[0].data[grid.keyField] != null && records[0].data[grid.keyField] > 0){
warnMsg($I18N.common.msg.ask_del, function(btn){
if(btn == 'yes'){
grid.BaseUtil.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + "common/deleteDetail.action",
params: {
caller: caller,
condition: grid.keyField + "=" + records[0].data[grid.keyField]
},
method : 'post',
callback : function(options,success,response){
grid.BaseUtil.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);return;
}
if(localJson.success){
grid.store.remove(records[0]);
delSuccess(function(){
});//@i18n/i18n.js
} else {
delFailure();
}
}
});
}
});
} else {
grid.store.remove(records[0]);
}
} else {
if(records[0].data[grid.keyField] != null && records[0].data[grid.keyField] > 0){
showError("grid未配置keyField,无法删除该行数据!");
} else {
grid.store.remove(records[0]);
}
}
}
},
onSave: function(grid, saveUrl){
var me = this;
if(grid){
var param = me.getGridStore();
if(grid.necessaryField.length > 0 && (param == null || param == '')){
showError('明细表还未添加数据');return;
} else {
var url = saveUrl || grid.saveUrl || Ext.getCmp('form').saveUrl;
me.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + url,
params : {
param: unescape(param.toString().replace(/\\/g,"%"))
},
method : 'post',
callback : function(options,success,response){
me.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
saveSuccess(function(){
//add成功后刷新grid
me.loadNewStore(grid, {
caller: caller,
condition: grid.mainField + '=' + Ext.getCmp(Ext.getCmp('form').keyField).value
});
});
} else if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
str = str.replace('AFTERSUCCESS', '');
saveSuccess(function(){
//add成功后刷新grid
me.loadNewStore(grid, {
caller: caller,
condition: grid.mainField + '=' + Ext.getCmp(Ext.getCmp('form').keyField).value
});
});
showError(str);
} else {
showError(str);
return;
}
} else{
saveFailure();//@i18n/i18n.js
}
}
});
}
}
},
onUpdate: function(grid, updateUrl){
var me = this;
if(grid){
var param = me.getGridStore();
if(grid.necessaryField.length > 0 && (param == null || param == '')){
showError('明细表还未添加数据');return;
} else {
var url = updateUrl || grid.updateUrl || Ext.getCmp('form').updateUrl;
me.update(param, url, function(){
me.loadNewStore(grid, {
caller: caller,
condition: grid.mainField + '=' + Ext.getCmp(Ext.getCmp('form').keyField).value
});
});
}
}
},
/**
* @param param
* @param param2
* ...
* @param updateUrl
* @param callback
*/
update: function() {
if(arguments.length < 3)
return;
var me = this, params = {}, url = arguments[arguments.length - 2],
callback = arguments[arguments.length - 1];
params.param = unescape(arguments[0].toString().replace(/\\/g,"%"));
for(var i=1; i 0){
tab = win[win.length-1];
}
}
return tab;
},
getGridSelected:function(grid){
var items = grid.selModel.getSelection(),data = new Array();
Ext.each(items, function(item, index){
if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
&& this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
var o = new Object();
if(grid.keyField){
o[grid.keyField] = item.data[grid.keyField];
}
if(grid.toField){
Ext.each(grid.toField, function(f, index){
var v = Ext.getCmp(f).value;
if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
if(Ext.isDate(v)){
v = Ext.Date.toString(v);
}
o[f] = v;
} else {
o[f] = '';
}
});
}
if(grid.necessaryFields){
Ext.each(grid.necessaryFields, function(f, index){
var v = item.data[f];
if(Ext.isDate(v)){
v = Ext.Date.toString(v);
}
if(Ext.isNumber(v)){
v = (v).toString();
}
o[f] = v;
});
}
data.push(o);
}
});
return data;
}
});