나는 분으로 가치가 있으며 시간과 분으로 변환되어 (예 : 615 분 = 10 시간 15 분) 그리드에 표시됩니다. 기본적으로 ext js 5는 문자열로 필터를 제공합니다. 그러나 나는 시간과 분으로 걸러 내고 싶다. 가능한가? 그렇다면 알려주세요.EXT JS 5 - Custome Filter for hours and minutes
1
A
답변
3
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)
);
}
});
+0
솔루션을 제공해 주셔서 감사 합니다만 약간의 변경이 필요합니다. 시간 열을 필터링하면 01:32 형식으로 문자열이 필터링되지만 1:32이됩니다. 따라서 1:32는 필터링되지 않습니다. –
는 로컬 또는 원격 필터는? 코드 또는 스크린 샷을 제공 할 수 있습니까? – hgulyan
당신이 gridfilters 플러그인에 대해 이야기하고 있다고 가정하면, 그렇습니다. 자신 만의 맞춤 필터를 만들어서 쉽게 할 수 있습니다. – existdissolve