我一直在使用ExtJS网格日期过滤,并且会非常感谢您的帮助。
我的目标是删除“ Before”和“ After”子菜单项,并仅显示“ On”项(甚至更好的是删除整个子菜单并仅显示日期选择器)。
所以我的问题是,是否可以删除那些物品,我该怎么办?
我尝试过使用menuItems配置menuItems: ['eq']
,这在视觉上有效,但是当我从日期选择器中选择某个日期时,会收到此错误Uncaught TypeError: Cannot read property 'up' of undefined
。
谢谢!
答案 0 :(得分:0)
“ onMenuSelect”上的“日期”过滤器组件存在问题,如果您选择“ on”选项,它将尝试取消选择“ before”和“ after”菜单,但是在配置中已将其删除。
我做了一些改写来解决此问题:
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();
}
});