1
我有幾分鐘的價值,我轉換成小時和分鐘(例如像615分鐘= 10小時和15分鐘)並顯示在網格中。默認情況下,ext js 5提供按字符串過濾。但我想按小時和分鐘過濾。可能嗎?如果是這樣,請告訴我。EXT JS 5 - 自定義過濾器小時和分鐘
我有幾分鐘的價值,我轉換成小時和分鐘(例如像615分鐘= 10小時和15分鐘)並顯示在網格中。默認情況下,ext js 5提供按字符串過濾。但我想按小時和分鐘過濾。可能嗎?如果是這樣,請告訴我。EXT JS 5 - 自定義過濾器小時和分鐘
你可以很容易地擴展Ext.grid.filters.filter.String
過濾器來做到這一點。其使用
示例代碼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)
);
}
});
感謝您的解決方案,但幾乎沒有變化是必需的。當我們過濾時間列時,它以01:32格式過濾字符串,但我們有1:32。所以,它不會過濾1:32。 – 2015-07-01 05:54:20
它是一個本地或遠程過濾?你能提供代碼或屏幕截圖嗎? – hgulyan 2014-11-25 12:48:34
假設您正在討論gridfilters插件,那麼是的,您可以通過創建自己的自定義過濾器來輕鬆完成此操作。 – existdissolve 2014-11-25 13:03:42