Extjs :( TimeField)重置minValue和maxValue

时间:2011-01-27 07:43:03

标签: extjs reset timefield

我有一个ExtJS TimeField,我使用setMinValue(...)setMaxValue(...)来向用户显示有效的时间元素。这很好用,但如何重置minValuemaxValue以便用户可以再次查看所有时间元素?

我不想清除该字段,只是再次显示商店中的所有元素。

4 个答案:

答案 0 :(得分:5)

我没有看到任何“干净”的方法来实现这一点,但我确实有一个临时的解决方法,直到你找到更合适的方式。

尝试将TimeField的{​​{1}}和minValue设置为maxValueundefined,然后在您的TimeField上调用null:< / p>

generateStore()

是的,它是一个私有方法,所以通常你不应该使用它,但是如果你只是重置minValue或maxValue,通常会调用该方法,所以你只是跳过一个步骤。通过将两个属性都设置为null, // private generateStore: function(initial){ var min = this.minValue || new Date(this.initDate).clearTime(), max = this.maxValue || new Date(this.initDate).clearTime().add('mi', (24 * 60) - 1), times = []; while(min <= max){ times.push(min.dateFormat(this.format)); min = min.add('mi', this.increment); } this.bindStore(times, initial); }, 的声明将等于默认值。你不能通过调用var min, max =setMinValue()来解决这个问题,因为它使用了一个私有方法,它试图从你传递给方法的值中解析一个Date(它将在解析null时失败):

setMaxValue()

<强>更新

更简洁的方法是扩展 // private setLimit: function(value, isMin, initial){ var d; // will fail here if(Ext.isString(value)){ d = this.parseDate(value); // will fail as well }else if(Ext.isDate(value)){ d = value; } // will never make it here, because 'd' wasn't set above if(d){ var val = new Date(this.initDate).clearTime(); val.setHours(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()); this[isMin ? 'minValue' : 'maxValue'] = val; if(!initial){ this.generateStore(); } } } 并添加一个TimeField方法来完成上述操作(将minValue / maxValue设置为null,调用生成存储),或者在覆盖中添加方法。这样,您就可以避免在任何地方拨打“私人”resetMinAndMax

答案 1 :(得分:3)

你可以简单地使用

this.setMinValue(false);
祝你好运

答案 2 :(得分:1)

extjs只重置了一个组件的属性“value”(如果我没有错),好吧,我不知道我的代码是否更好,但是......就像上面的答案一样,我覆盖了使用Field类的代码从DateField类重置方法,并添加另外2个属性以保留原始值(originalMinValue和originalMaxValue)。

originalMinValue和originalMaxValue在我的Date Field的onRender事件中启动。

this.setValue = this.setValue.createSequence(this.updateHidden);
this.originalMinValue = this.minValue;
this.originalMaxValue = this.maxValue;
// this is part of me onRender event code

那就是覆盖

Ext.override(Ext.form.DateField,{   
originalMinValue : null,
originalMaxValue : null,
reset : function() {                
    this.setValue(this.originalValue);      
    this.setMinValue(this.originalMinValue);
    this.setMaxValue(this.originalMaxValue);
    this.clearInvalid();        
}

})

这样,我们可以使用组件的重置方法e,value,minValue和MaxValue返回原始值。

抱歉我的英语不好。

答案 3 :(得分:0)

您是否在加载页面后的时间段的初始值之后?如果是这种情况,您应该能够使用FIELD类的reset()方法。你应该有权访问这个,因为时域组件是从FIELD扩展的。