Extjs EXT JS 5-用于小时和分钟的自定义筛选器
我的值以分钟为单位,转换成小时和分钟(例如615分钟=10小时和15分钟),并显示在网格中。默认情况下,ExtJS5提供按字符串筛选。但我想按小时和分钟过滤。可能吗?如果是这样,请告诉我。您可以轻松扩展Extjs EXT JS 5-用于小时和分钟的自定义筛选器,extjs,extjs4.2,extjs5,Extjs,Extjs4.2,Extjs5,我的值以分钟为单位,转换成小时和分钟(例如615分钟=10小时和15分钟),并显示在网格中。默认情况下,ExtJS5提供按字符串筛选。但我想按小时和分钟过滤。可能吗?如果是这样,请告诉我。您可以轻松扩展Ext.grid.filters.filter.Stringfilter来实现这一点 使用timefield的示例代码: Ext.define('Ext.ux.grid.filters.filter.Time', { extend: 'Ext.grid.filters.filter.Str
Ext.grid.filters.filter.String
filter来实现这一点
使用timefield的示例代码:
Ext.define('Ext.ux.grid.filters.filter.Time', {
extend: 'Ext.grid.filters.filter.String',
alias: 'grid.filter.time',
type: 'time',
operator: 'eq',
// change item template to timefield
itemDefaults: {
xtype: 'timefield',
enableKeyEvents: true,
format: 'H:i',
hideEmptyLabel: false,
iconCls: Ext.baseCSSPrefix + 'grid-filters-find',
labelSeparator: '',
labelWidth: 29,
margin: 0,
selectOnFocus: true
},
createMenu: function () {
var me = this;
me.callParent();
// add handler to change event
me.inputItem.on({
scope: me,
change: {
fn: me.onChange,
buffer: 200
}
});
},
// handle change event
onChange: function(field) {
this.setValue(field.getValue());
},
// set value - value comes as date
setValue: function (value) {
var me = this;
if (me.inputItem) {
me.inputItem.setValue(value);
}
// convert date to number
me.filter.setValue(value.getHours() * 60 + value.getMinutes());
if (value && me.active) {
me.updateStoreFilter(me.filter);
} else {
me.setActive(!!value);
}
},
activateMenu: function () {
var value = this.filter.getValue();
// convert number back to date
this.inputItem.setValue(
new Date(2008, 0, 1, Math.floor(value / 60), (value % 60), 0)
);
}
});
Fiddle:是本地过滤器还是远程过滤器?您可以提供代码或屏幕截图吗?假设您正在谈论gridfilters插件,那么是的,您可以通过创建自己的自定义过滤器轻松完成这项工作。感谢您提供的解决方案,但只需要很少的更改。当我们过滤时间列时,它是过滤01:32格式的字符串,但我们有1:32。因此,它不会过滤1:32。