3

ExtJS Date フィールドがあります。アプリケーションでの操作中に、最小値と最大値が日付フィールドに割り当てられます。最小値と最大値は現在の日付の 4 年前ですが、日付ピッカーを開くと、無効になっている現在の日付が表示されます。ユーザーは、日付を選択するために手動で 4 年さかのぼる必要があります。とにかく、日付ピッカーを更新して、最小値と最大値の間の日付を表示することはできますか?

コードの追加:

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

これにより、最小値と最大値が設定されます。setValue()テキストフィールドを初期化/変更するため、使用できません。日付ピッカーからの選択時にのみテキストフィールドに値を取得させたい。

ありがとう

4

2 に答える 2

5

valueのプロパティを使用して初期値を設定する必要がありExt.form.field.DateViewます。

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

OPからの詳細情報の後に編集:

onExpandピッカーの値を初期化するメソッドをオーバーライドできます。元のものは次のようになります (ExtJS 4 を使用している場合 - しかし 3 はそれほど変わらないはずです):

...,
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);
},
... 

フォーム フィールドの初期設定にオーバーライドを追加するだけです。

于 2012-04-20T07:20:53.630 に答える
0

この問題に対する EXTJS 3 ソリューションに関心のある人のために、次のコードを作成しました。

これにより、必要に応じて、宣言時にinitialDateToShowOnPicker構成として渡すことができます。Ext.DatePicker

setInitialDateToShowOnPicker(initialDateToShowOnPicker)また、datepicker コンポーネントを呼び出して動的に設定することもできます。

どちらも 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');
    }
});     }
于 2015-05-05T12:57:17.170 に答える