Javascript Extjs网格限制列显示/隐藏检查
我想限制用户在网格中选中/取消选中列。这是一个默认的Javascript Extjs网格限制列显示/隐藏检查,javascript,extjs,Javascript,Extjs,我想限制用户在网格中选中/取消选中列。这是一个默认的extjs网格,我希望在列菜单复选框上应用类似于在之前选择事件或配置的内容。因此,如果选择了“允许的最大列数”,并且用户尝试检查更多列,则会弹出错误消息 请引导我,提前谢谢。我不会做那些错误消息的事情,因为错误消息会让用户感到厌烦。当达到最大值时,我会在columnshow事件中禁用未选中的列,如下所示: var doCheckItems = function() { var showncolumns = Ext.Arr
extjs
网格,我希望在列菜单复选框上应用类似于在之前选择事件或配置的内容。因此,如果选择了“允许的最大列数”,并且用户尝试检查更多列,则会弹出错误消息
请引导我,提前谢谢。我不会做那些错误消息的事情,因为错误消息会让用户感到厌烦。当达到最大值时,我会在columnshow
事件中禁用未选中的列,如下所示:
var doCheckItems = function() {
var showncolumns = Ext.Array.sum(grid.headerCt.query("gridcolumn").map(function(column) {return column.isVisible()?1:0;}));
if(showncolumns >= 5) {
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
if(!item.checked) item.disable();
})
} else {
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
item.enable();
})
}
};
grid.headerCt.on('columnshow',doCheckItems);
grid.headerCt.on('columnhide',doCheckItems);
但是如果您仍然需要,可以绑定到菜单下的检查项目
上的beforecheckchange
事件:
var doCheckChange = function() {
var showncolumns = Ext.Array.sum(grid.headerCt.query("gridcolumn").map(function(column) {return column.isVisible()?1:0;}));
if(showncolumns >= 5) {
Ext.Msg.alert('Error','Too many columns checked');
return false;
}
};
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
item.on('beforecheckchange', doCheckChange);
});
你好,谢谢你的快速回复。第一种方法非常有效,但我必须使用第二种方法。在第二种方法中,我看到在达到最大限制后无法取消选中复选框。