[英]Extjs grid limit column show/hide checks
I want to limit user from checking/unchecking columns in grid. 我想限制用户检查/取消检查网格中的列。 It is a default
extjs
grid and I want something like, on beforeselect
event or config to be applied on columns menu checkboxes
. 这是默认的
extjs
网格,我希望在beforeselect
事件或配置beforeselect
其应用于列菜单checkboxes
。 so if max allowed columns are selected and user tries to check more columns, the error message should pop up. 因此,如果选择了“允许的最大列数”,并且用户尝试检查更多列,则将弹出错误消息。
Please guide me, thanks in advance. 请指导我,谢谢。
I wouldn't do that error message stuff, because error messages are annoying the user. 我不会做这些错误消息之类的东西,因为错误消息会惹恼用户。 I would disable unchecked columns in the
columnshow
event when the maximum is reached, like this: 当达到最大值时,我将在
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);
https://fiddle.sencha.com/#fiddle/1fkj https://fiddle.sencha.com/#fiddle/1fkj
But if you still want, you can bind to the beforecheckchange
event on the menucheckitems
: 但是,如果仍然需要,可以绑定到
beforecheckchange
上的menucheckitems
事件:
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);
});
https://fiddle.sencha.com/#fiddle/1fkl https://fiddle.sencha.com/#fiddle/1fkl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.