Itens de Combobox dobles
Saludos a todos!
Soy nuevo en Extjs4. Estoy cambiando un ejemplo que saquei de la red.
Cuando hago la llamada de programa en las cajas combox para seleccionar uno iten del combobox se me muestran varios intens de mismo nombre. Por ejemplo: En la grid se muestra varios registros de un mismo usuario con fechas diferentes, pero en la caja dos combobox el nombre do usuario se repite,o sea no está haciendo filtro para que se muestre un só nombre.
//*** Lo store és lo mismo del Grid
//*** La linea original és igual que esta: store: me.buildStore().collect(dataIndex),
// pero no trae ninguno resultado
//*** cambiando por store del Grid me sale los nombres repetidos.
store: 'TipoChecks', // linea cambiada
Mira el código:
Ext.define('WSExt.view.tipoCheck.List' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.tipoCheckList',
store: 'TipoChecks',
title : 'Lista dos tipos de Checklist',
//selModel: {mode: 'MULTI'},
// selModel: Ext.create('Ext.selection.CheckboxModel'),
columnLines: true,
tbar :[
{
text: 'Incluir',
action: 'insert',
iconCls: 'add',
itemId: 'insert'
}
/* ,{
text: 'Editar',
action: 'edit',
iconCls: 'edit',
itemId: 'edit',
disabled: true
},
{
text: 'Excluir',
action: 'destroy',
iconCls: 'delete',
itemId: 'delete',
disabled: true
}
*/ ,{
text: 'Recarregar dados',
action: 'refresh',
iconCls: 'refresh',
itemId: 'refresh'
}
],
viewConfig: {
stripeRows: false,
getRowClass: function(record) {
return record.get('status') == 'N' ? 'red' : 'black';
}
},
columns: [
Ext.create('Ext.grid.RowNumberer'),
{
header: "ID",
width: 40,
dataIndex:"id",
filterable: true
},{
header: "Data do Registro",
width: 120,
xtype:'datecolumn',
format:'d/m/Y H:i:s',
dataIndex:"data_registro",
filterable: true
},{
header: "Usuário",
width: 100,
dataIndex:"usuario",
filterable: true
},{
header: "Data do Processo",
width: 100,
xtype:'datecolumn',
format:'d/m/Y',
dataIndex:"data_processo",
filterable: true
},{
header: "Servidor",
flex:1,
dataIndex: "nome_servidor",
filterable: true
},{
header: "Nome do Processo",
flex:1,
dataIndex: "processo",
filterable: true
},{
header: "Duração",
width: 60,
dataIndex: "duracao" ,
filterable: true
},{
header: "Status",
width: 40,
dataIndex: "status",
filterable: true
},{
header: "HD",
width: 40,
dataIndex: "hd",
filterable: true
}],
dockedItems: [{
xtype: 'pagingtoolbar',
store: 'TipoDespesas',
dock: 'bottom',
displayInfo: true
}],
initComponent: function(){
var me = this;
me.bbar = me.buildBbar();
this.callParent();
this.getSelectionModel().on('selectionchange', this.onSelectChange, this);
},
onRender: function(){
this.store.load();
this.callParent(arguments);
},
onSelectChange: function(selModel, selections){
this.down('#delete').setDisabled(selections.length === 0);
this.down('#edit').setDisabled(selections.length !== 1);
},
// Los cambios se empiezan acá.
//*** Crear el Bbar del combo
buildBbar : function (){
var me = this, bBar, cUsuario, cServidor, cProcesso, cStatus, cHd, bReset;
cUsuario = me.buildCombo('Usuário', 'usuario');
cServidor = me.buildCombo('Nome do Servidor', 'nome_servidor');
cProcesso = me.buildCombo('Processo', 'processo');
cStatus = me.buildCombo('Status', 'status');
cHd = me.buildCombo('Hd', 'hd');
bReset = Ext.create('Ext.Button', {text: 'Reset', handler: function() { me.resetCombos();}});
bBar = [cUsuario, cServidor, cProcesso, cStatus, cHd, bReset];
return bBar;
},
//*** Crear el Combo
buildCombo:function(name, dataIndex){
var me = this, combo;
combo = Ext.create('Ext.form.ComboBox', {
id: dataIndex+this.id,
//*** Lo store és lo mismo del Grid
//*** La linea original és igual que esta: store: me.buildStore().collect(dataIndex),
// pero no trae ninguno resultado
//*** cambiando por store del Grid me sale los nombres repetidos.
store: 'TipoChecks',
emptyText: name+'...',
displayField: dataIndex,
valueField: dataIndex,
queryMode: 'local',
flex:1,
listeners:{
scope:this,
change:function(t, nv, ov, eOpts){
me.filterStore();
}
}
});
return combo;
},
//*** Crear los filtros de Store
// Seria aquí que deve ser configurado para mostrar apenas um item de cada coluna do grid ?
filterStore:function(){
var me = this, i, value, combos = ['usuario', 'nome_servidor','processo','status','hd'];
me.store.clearFilter(false);
for (i = 0; i < combos.length; i++){
value = Ext.getCmp(combos[i]+me.id).getValue();
if (!Ext.isEmpty(value)){
me.store.filter(combos[i], value, true, false)
}
}
},
// *** Limpiar los Combos
resetCombos:function(){
var me = this, i, combos = ['usuario', 'nome_servidor','processo','status','hd'];
me.store.clearFilter(false);
for (i = 0; i < combos.length; i++){
Ext.getCmp(combos[i]+me.id).reset();
}
}
});
Gracias de antemano.
Joseb
desde Brazil
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.