Я застрял на этой фильтрации даты сетки ExtJS и буду очень признателен за некоторую помощь.
Моя цель - удалить элементы подменю «До» и «После» и показать только элемент «Вкл.» (Еще лучше удалить все подменю и просто показать указатель даты).
Итак, мой вопрос: можно ли удалить эти элементы и как это сделать?
Я пробовал с конфигурацией menuItems menuItems: ['eq']
, и это работает визуально, но когда я выбираю дату в datepicker, я получаю эту ошибку Uncaught TypeError: Cannot read property 'up' of undefined
.
Спасибо!
Есть проблема в компоненте фильтра даты в «onMenuSelect», он пытается отменить выбор как «до», так и «после», если вы выбираете опцию «on», но вы удалили их в конфигурации.
Я сделал небольшое переопределение, чтобы исправить это:
Ext.override(Ext.grid.filters.filter.Date, {
onMenuSelect: function(picker, date) {
var me = this,
fields = me.fields,
filters = me.filter,
field = fields[picker.itemId],
gt = fields.gt,
lt = fields.lt,
eq = fields.eq,
v = {};
field.up('menuitem').setChecked(true, /*suppressEvents*/
true);
//The problem ocurrs here, i modified this line
//if (field === eq) {
//**********************************************
if ((field === eq)&&(lt!=null)&&(gt!=null)) {
lt.up('menuitem').setChecked(false, true);
gt.up('menuitem').setChecked(false, true);
} else {
eq.up('menuitem').setChecked(false, true);
if (field === gt && (+lt.value < +date)) {
lt.up('menuitem').setChecked(false, true);
if (filters.lt.getValue() != null) {
v.lt = null;
}
} else if (field === lt && (+gt.value > +date)) {
gt.up('menuitem').setChecked(false, true);
if (filters.gt.getValue() != null) {
v.gt = null;
}
}
}
v[field.filterKey] = date;
me.setValue(v);
picker.up('menu').hide();
}
});