whole_func_string: function() {
  		var me = this;
  		var columns = this.grid.headerCt.getGridColumns();
  		me.columns.clear();
  		me.autoStores.clear();
  
          
  		Ext.each(columns, function(column) {
  			if (column.filter) {
  				if (column.filter === true || column.filter === 'auto') { // automatic types configuration (store based)
  					var type = 'auto'//me.grid.store.model.prototype.fields.get(column.dataIndex).type.type;
  					if (type == 'auto') type = 'string';
  					column.filter = type;
  				}
  				if (Ext.isString(column.filter)) {
  					column.filter = {
  						type: column.filter // only set type to then use templates
  					};
  				}
  				if (column.filter.type) {
  					column.filter = Ext.applyIf(column.filter, me[column.filter.type + 'Tpl']); // also use templates but with user configuration
  				}
  
  				if (column.filter.xtype == 'combo' && !column.filter.store) {
  					column.autoStore = true;
  					column.filter.store = Ext.create('Ext.data.ArrayStore', {
  						fields: [{
  							name: 'text'
  						},{
  							name: 'id'
  						}]
  					});
  					me.autoStores.add(column.dataIndex, column.filter.store);
  					column.filter = Ext.apply(column.filter, {
  						displayField: 'text',
  						valueField: 'id'
  					});
  				}
  
  				if (!column.filter.type) {
  					switch(column.filter.xtype) {
  						case 'combo':
  							column.filter.type = (column.filter.multiSelect ? 'list' : 'combo');
  							break;
  						case 'datefield':
  							column.filter.type = 'date';
  							break;
  						case 'numberfield':
  							column.filter.type = (column.filter.allowDecimals ? 'float' : 'int');
  							break;
  						default:
  							column.filter.type = 'string'
  					}
  				}
  
  				if (!column.filter.operator) {
  					column.filter.operator = me[column.filter.type + 'Tpl'].operator;
  				}
  				me.columns.add(column.dataIndex, column);
  			}
  		}, me);
  		if (me.autoStores.getCount()) {
  			if (me.grid.store.getCount() > 0) {
  				me.fillAutoStores(me.grid.store);
  			}
  			if (me.grid.store.remoteFilter) {
  				var autoStores = [];
  				me.autoStores.eachKey(function(key, item) {
  					autoStores.push(key);
  				});
  				me.grid.store.proxy.extraParams = me.grid.store.proxy.extraParams || {};
  				me.grid.store.proxy.extraParams[me.autoStoresRemoteProperty] = autoStores;
  			}
  			me.grid.store.on('load', me.fillAutoStores, me);
  		}
  	}
func_code_string: function() {
  		var me = this;
  		var columns = this.grid.headerCt.getGridColumns();
  		me.columns.clear();
  		me.autoStores.clear();
  
          
  		Ext.each(columns, function(column) {
  			if (column.filter) {
  				if (column.filter === true || column.filter === 'auto') { // automatic types configuration (store based)
  					var type = 'auto'//me.grid.store.model.prototype.fields.get(column.dataIndex).type.type;
  					if (type == 'auto') type = 'string';
  					column.filter = type;
  				}
  				if (Ext.isString(column.filter)) {
  					column.filter = {
  						type: column.filter // only set type to then use templates
  					};
  				}
  				if (column.filter.type) {
  					column.filter = Ext.applyIf(column.filter, me[column.filter.type + 'Tpl']); // also use templates but with user configuration
  				}
  
  				if (column.filter.xtype == 'combo' && !column.filter.store) {
  					column.autoStore = true;
  					column.filter.store = Ext.create('Ext.data.ArrayStore', {
  						fields: [{
  							name: 'text'
  						},{
  							name: 'id'
  						}]
  					});
  					me.autoStores.add(column.dataIndex, column.filter.store);
  					column.filter = Ext.apply(column.filter, {
  						displayField: 'text',
  						valueField: 'id'
  					});
  				}
  
  				if (!column.filter.type) {
  					switch(column.filter.xtype) {
  						case 'combo':
  							column.filter.type = (column.filter.multiSelect ? 'list' : 'combo');
  							break;
  						case 'datefield':
  							column.filter.type = 'date';
  							break;
  						case 'numberfield':
  							column.filter.type = (column.filter.allowDecimals ? 'float' : 'int');
  							break;
  						default:
  							column.filter.type = 'string'
  					}
  				}
  
  				if (!column.filter.operator) {
  					column.filter.operator = me[column.filter.type + 'Tpl'].operator;
  				}
  				me.columns.add(column.dataIndex, column);
  			}
  		}, me);
  		if (me.autoStores.getCount()) {
  			if (me.grid.store.getCount() > 0) {
  				me.fillAutoStores(me.grid.store);
  			}
  			if (me.grid.store.remoteFilter) {
  				var autoStores = [];
  				me.autoStores.eachKey(function(key, item) {
  					autoStores.push(key);
  				});
  				me.grid.store.proxy.extraParams = me.grid.store.proxy.extraParams || {};
  				me.grid.store.proxy.extraParams[me.autoStoresRemoteProperty] = autoStores;
  			}
  			me.grid.store.on('load', me.fillAutoStores, me);
  		}
  	}
func_documentation_string: private