2017-09-29 12 views
0

私はSenchaで何かを変更する必要があります。最初は無効にしなければならない2番目のコンボボックスを追加する必要があります。問題はありませんが、最初のコンボボックスは2番目のコンボボックスを有効にしますすべて)を選択すると、非常に簡単に見えます。ここで SENCHA/ext jsの別のコンボボックスからコンボボックスを有効にするには?

はコードです:

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(); 
    } 
    }] 
}); 

UPDATE:

私が最初のコンボでリスナーを入れた場合、私はそれをしたいように、部分動作しますが、第二のコンボだけでドロップダウンを働きますまだ無効のように見えますが、私は編集できません。だから今の質問は、2番目のコンボボックスを完全に運用する方法です。

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

あなたは[フィドル](https://fiddle.sencha.com/)を提供することができます –

答えて

1

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
items:[{ 
    xtype: "combobox", 
    name: "TubeWellId", 
    fieldLabel: "Tubewell", 
    store: tube_well_store, 
    allowBlank: false, 
    displayField: "TubeWellName", 
    valueField: "TubeWellId", 
    queryMode: "local", 
    forceSelection: true, 
    listeners: { 
     select: function (combo) { 
      var getForm = this.up("form").getForm(); 
      if (combo.getValue() === 1) { 
       getForm.findField("TubeWellDistance").setReadOnly(true); 
      } else { 
       getForm.findField("TubeWellDistance").setReadOnly(false); 
      } 
     } 
    } 
}, { 
    xtype: "combobox", 
    name: "TubeWellDistance", 
    fieldLabel: "Tubewell Distance", 
    store: tube_well_store, 
    allowBlank: false, 
    displayField: "DistanceName", 
    valueField: "DistanceId", 
    queryMode: "local", 
    forceSelection: true, 
}] 
関連する問題