如何在SENCHA / ext js中从另一个组合框启用组合框?

时间:2017-09-29 18:06:27

标签: javascript html extjs combobox sencha-architect

我需要在Sencha中更改一些内容,我需要添加第二个组合框,在开始时必须禁用,这没关系,但是我需要第一个组合框在某些项目时启用第二个组合框(并非所有)从第一个组合中选择,看起来很简单。

以下是代码:

var formPanel = new Ext.form.FormPanel({
  id: 'formanchor-form',
  title: 'Nuevo Gasto',
  bodyStyle: 'padding:5px 5px 0',
  width: 600,
  defaults: {
    width: 230
  },
  defaultType: 'textfield',
  renderTo: 'formulario',
  frame: true,
  items: [{
    xtype: 'combo',
    typeAhead: true,
    name: 'cboGasto',
    id: 'cboGasto',
    fieldLabel: 'Gastos',
    store: storeCbo,
    displayField: 'gasto',
    valueField: 'codigo',
    allowBlank: false,
    width: 250,
    mode: 'local',
    triggerAction: 'all',
    emptyText: 'SELECCIONE',
    blankText: 'Debe seleccionar un gasto',
    forceSelection: true
  }, {
    xtype: 'numberfield',
    fieldLabel: 'Monto',
    name: 'txtMonto',
    id: 'txtMonto',
    maxLength: 7,
    allowBlank: false,
    minValue: 100,
    minText: 'El monto mínimo es 100',
    maxValue: 9999999,
    maxLengthText: 'El monto máximo es 9.999.999',
    blankText: 'El monto es requerido',
    width: 100
  }, {
    xtype: 'combo',
    typeAhead: true,
    name: 'CboDeudasReceptor',
    id: 'CboDeudasReceptor',
    fieldLabel: 'Receptor',
    store: storeCboR,
    displayField: 'receptor',
    valueField: 'codigo',
    allowBlank: false,
    width: 250,
    mode: 'local',
    triggerAction: 'all',
    emptyText: 'SELECCIONE',
    blankText: 'Debe seleccionar un Receptor',
    forceSelection: true,
    disabled: true
  }],
  buttons: [{
    text: 'Agregar',
    handler: function() {
      var mon = Ext.getCmp('txtMonto').getValue();
      var gas = Ext.getCmp('cboGasto').getValue();
      if (mon.length == 0) {
        Ext.MessageBox.alert('Monto del Gasto', 'Debe Ingresar un monto para el gasto.');
        Ext.getCmp('txtMonto').focus();
        return false;
      }
      if (gas.length == 0) {
        Ext.MessageBox.alert('Gasto', 'Debe Seleccionar un gasto.');
        Ext.getCmp('cboGasto').focus();
        return false;
      }
      location.href = 'ingresa_gastos_lib.asp?cboGasto=' + gas + '&txtMontoPesos=' + mon + '&' + params();
    }
  }, {
    text: 'Volver',
    handler: function() {
      location.href = 'datos_deuda.asp?' + params();
    }
  }]
});

更新:

如果我在第一个组合中放置一个监听器,那么部分工作就像我想要的那样,但是第二个组合只是工作下拉列表但看起来仍然是禁用的,我无法编辑。所以现在的问题是:如何让第二个组合框完全运行。

listeners: {
  select: function(combo, record, index) {
    if (Ext.getCmp('cboGasto').getRawValue() == 'RECEPTOR: EMBARGO') {
      alert(Ext.getCmp('cboGasto').getRawValue());
      Ext.getCmp('CboDeudasReceptor').disabled = false;
    }
  }
}

2 个答案:

答案 0 :(得分:2)

disabled字段设置为false不是解决方案。它只是更改对象中属性的值,但所有视觉样式仍然存在。您应该使用组合框的setDisabled()方法,或enable()disabled()方法。所以你的听众应该如下所示:

select: function (combo, record, index) {
    if (Ext.getCmp('cboGasto').getRawValue()=='RECEPTOR: EMBARGO'){
            alert(Ext.getCmp('cboGasto').getRawValue());
            Ext.getCmp('CboDeudasReceptor').setDisabled(false);
            //Or Ext.getCmp('CboDeudasReceptor').enable();
        }
    }
}

答案 1 :(得分:-1)

public function update_number($id,$lnum)
{
    $this->db->set('eenter code herem_lastnumber', '$lnum');
    $this->db->where('em_id',$id);
    $this->db->update('emaster');
}