2012-04-20 3 views
3

ExtJS Date 필드가 있습니다. 응용 프로그램에서 일부 조작 중 최소값과 최대 값이 날짜 필드에 지정됩니다. 최소값과 최대 값은 현재 날짜보다 4 년 전이지만 날짜 선택 도구가 열리면 비활성화 된 현재 날짜가 열립니다. 사용자는 날짜를 선택하기 위해 수동으로 4 년 뒤로 스크롤해야합니다. 어쨌든 datepicker를 업데이트하여 최소값과 최대 값 사이의 날짜를 표시함으로써 열 수 있습니까?ExtJS DateField - 초기화 날짜

추가 코드 :

cmpDt.setMinValue(new Date(2000, 0, 1)); 
cmpDt.setMaxValue(new Date(2004, 0, 1)); 

이 최소 및 최대 값을 설정한다. 나는 그것이/텍스트 필드를 inialises/변경 때문에 setValue()을 사용하지 않습니다. 나는 텍스트 필드가 datepicker의 선택에서만 가치를 갖기를 원합니다.

감사

답변

5

당신은 Ext.form.field.DateViewvalue 사용하여 속성 초기 값을 설정해야합니다 : 영업에서 더 많은 정보를 원하시면 후

{ 
    ..., 
    minValue: new Date(2000, 0, 1), 
    maxValue: new Date(2004, 11, 31), 
    value: new Date(2002, 5, 15), 
    ... 
} 

편집는 :

당신은 onExpand 오버라이드 (override) 피커의 값을 초기화하는 메서드입니다. 원래 사람은 (당신의 ExtJS 4 사용하는 것이 주어진 -하지만 3 크게 다르지 안)과 같은 : 당신은 메소드를 오버라이드 (override) 할 수

..., 
onExpand: function() { 
    var value = this.getValue(); 
    this.picker.setValue(Ext.isDate(value) ? value : new Date()); 
}, 
... 

은 읽기 :

..., 
onExpand: function() { 
    var value = this.getValue(), 
     myDefaultDate = /* do some processing to determine the default date*/; 
    this.picker.setValue(Ext.isDate(value) ? value : myDefaultDate); 
}, 
... 

그냥에 재정의를 추가 초기 폼 필드 설정.

+0

초기 설정에서 최소 값으로 추가 할 수 없으며 최대 값은 수행 된 일부 작업 사이에 설정됩니다. – Zaje

+0

안녕하세요, 위 코드를 구현 한 후 내 선택기가 확장되지 않거나 extjs 4에 채워지지 않습니다. – Kanchan

0

이 문제의 EXTJS 3 솔루션에 관심이있는 분들은 다음 코드를 작성했습니다.

이렇게하면 Ext.DatePicker에 대한 설정으로 initialDateToShowOnPicker을 전달할 수 있습니다 (필요한 경우).

datepicker 구성 요소에서 setInitialDateToShowOnPicker(initialDateToShowOnPicker)을 호출하여 동적으로 설정할 수도 있습니다.

둘 다 Date() 유형을 사용해야하며 datepicker에 이미 값이 설정되어있을 수 없습니다.

if (Ext.versionDetail && Ext.versionDetail.major == 3) { 

Ext.form.DateField.prototype.setInitialDateToShowOnPicker = function (initialDateToShowOnPicker) { 
    this.initialDateToShowOnPicker = initialDateToShowOnPicker; 
}; 

Ext.form.DateField.override({ 
    onTriggerClick: function() { 
     if(this.disabled){ 
      return; 
     } 
     if(this.menu == null){ 
      this.menu = new Ext.menu.DateMenu({ 
       hideOnClick: false, 
       focusOnSelect: false 
      }); 
     } 
     this.onFocus(); 
     Ext.apply(this.menu.picker, { 
      minDate : this.minValue, 
      maxDate : this.maxValue, 
      disabledDatesRE : this.disabledDatesRE, 
      disabledDatesText : this.disabledDatesText, 
      disabledDays : this.disabledDays, 
      disabledDaysText : this.disabledDaysText, 
      format : this.format, 
      showToday : this.showToday, 
      startDay: this.startDay, 
      minText : String.format(this.minText, this.formatDate(this.minValue)), 
      maxText : String.format(this.maxText, this.formatDate(this.maxValue)), 
      initialDateToShowOnPicker: this.initialDateToShowOnPicker // Date() type 
     }); 
     this.menu.picker.setValue(this.getValue() || this.initialDateToShowOnPicker || new Date()); 
     this.menu.show(this.el, "tl-bl?"); 
     this.menuEvents('on'); 
    } 
});  }