2013-03-13 1 views
1

다른 필드의 값에 따라 양식 안의 표시 필드 값을 변경하려고합니다 (숨김).Extjs - 숨겨진 필드 내용에 대한 텍스트 레이블 값 변경

숨겨진 필드는 mapping에서 값을 검색하고 표시 필드는 매핑의 콘텐츠를 검색하지만 숨겨진 값에 따라 두 가지 다른 값 (매핑 1, 매핑 2)을 검색합니다. 이것은 내가 할 노력하고있어입니다 :

mapping: ['myHidden''mapping1','mapping2'], 
form: [{ 
    fieldLabel: 'myHidden', 
    xtype: 'hidden', 
    name: 'myHidden', 
    listeners: { 
      'change': function(){ 
        if(this.getValue=='X'){ 
         this.up('form').findfield('myText').setName('mapping1'); 
        } 
        else{ 
         this.up('form').findfield('myText').setName('mapping2'); 
        } 
       } 
      } 
    },{ 
     fieldLabel: 'myText', 
     xtype: 'displayfield' 
    }]  

을 나는 name 태그에 의해 주어진다 '으로 myText'에 매핑을 알아 보았으로,하지만 변경 wan't 때문에이 값은 내가 그것을해야 어때?

난 그냥 서버에서 골짜기 'myHidden'필드에서 가져 오는 값을 기반으로 양식로드에 'myText'의 매핑을 변경하려면.

도와 주셔서 감사합니다.

답변

1

나는 원하는대로 작동하는 첫 번째 예제를 얻을 수있었습니다. 나는 그것이 최선의 해결책인지는 모르지만 같은 문제에 직면하고 있다면 그것을 사용할 수 있도록 여기에 놓을 것입니다.

는 기본적으로 나는 숨겨진 필드에 값을 매핑 한 후, 나는 첫 번째 솔루션없이 성공을 해봤 myHidden

mapping: ['myHidden''mapping1','mapping2'], 
form: [{ 
    fieldLabel: 'mapping1', 
    xtype: 'hidden', 
    id: 'mapping1', 
},{ 
    fieldLabel: 'mapping2', 
    xtype: 'hidden', 
    id: 'mapping2', 
},{ 
    fieldLabel: 'myHidden', 
    xtype: 'hidden', 
    name: 'myHidden', 
    listeners: { 
      'change': function(){ 
        if(this.getValue=='X'){ 
         Ext.getCmp('myText').setValue(Ext.getCmp('mapping1').getValue()); 
        } 
        else{ 
         Ext.getCmp('myText').setValue(Ext.getCmp('mapping2').getValue()); 
        } 
       } 
      } 
    },{ 
     fieldLabel: 'myText', 
     xtype: 'displayfield', 
     id: 'myText' 
    }]  
1

텍스트 필드 (name)에 중요한 기능으로 기능을 정의하고 있습니다. 왜 그런 짓을 한거야?
다시 답변 ... 내 대답을 ..

어디에서 텍스트 필드 값을 변경 하시겠습니까? hiddenfield가 값을 얻을 때? 이 코드는 당신을 위해 작동합니다

{ 
    xtype: 'hidden', 
    id: 'myHidden',//Do you really want an id? 
    name: 'myHidden', 
    listeners: { 
    change: function(){ 
     //this piece of code changes the textfield to the same value as the hidden field when the hidden field value changes. 
     this.up('form').findfield('myTextField').setValue(this.getValue()); 
    } 
    } 
},{ 
    fieldLabel: 'myText', 
    xtype: 'displayfield',   
    name: 'myTextField' 
} 

IMO이 문제를 해결하는 가장 좋은 방법은에 HiddenField과의 필드 컨테이너를 만드는 것입니다. 이렇게하면 hiddenfield 값이 다른 필드의 값이 아닌 폼에 의해 게시됩니다.

Ext.define('LookupField', { 
    extend: 'Ext.container.Container', 
    alias: 'widget.lookupfield', 

    constructor: function (config) { 
     var me = this; 
     var hiddenFieldName = me.name; 
     var triggerFieldName = "Display" + me.name; 

     me.hiddenField = Ext.create('Ext.form.field.Hidden', { 
      name: hiddenFieldName, 
      hidden: true 
     }); 

     me.triggerField = Ext.create('Ext.form.field.Trigger', { 
      name: triggerFieldName, 
      triggerCls: 'x-form-search-trigger', 
      editable: false, 
      submitValue: false, 
      enableKeyEvents: true, 
      onTriggerClick: function() { 
      }//eo onTriggerClick 
     }); 
     //Add config to the triggerfield 
     Ext.applyIf(me.triggerField, config); 
     //Add the hiddenfield and triggerfield to the container 
     me.items = [me.hiddenField, me.triggerField]; 
     me.callParent(arguments); 
    }//eo initComponent 
}); 
+0

안녕하세요의 값에 따라 displayfield의 내용을 변경합니다. ExtJS 3.0 btw를 사용하고 있습니다. 내가 뭘하고 싶은지에 대한 좀 더 완벽한 예를 들어 질문을 편집했습니다. 도와 줘서 고마워. – mikethe