Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Extjs网格限制列显示/隐藏检查_Javascript_Extjs - Fatal编程技术网

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);
});

你好,谢谢你的快速回复。第一种方法非常有效,但我必须使用第二种方法。在第二种方法中,我看到在达到最大限制后无法取消选中复选框。