Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 3 DataGrid:如何使标题菜单中的最后一个选中项处于非活动状态_Javascript_Extjs_Extjs3 - Fatal编程技术网

Javascript ExtJS 3 DataGrid:如何使标题菜单中的最后一个选中项处于非活动状态

Javascript ExtJS 3 DataGrid:如何使标题菜单中的最后一个选中项处于非活动状态,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,主语 在我的情况下,我可以删除所有复选框-这是错误的。它应该像Sencha GXT复选框网格: 说明: 1) 数据网格被渲染 2) 单击排序菜单,选择“列” 3) 以任意顺序隐藏某些列(例如,第4列,共5列) 4) 最后一个菜单项应该像屏幕截图上一样处于非活动状态 最后一个-I表示它不是id=(colCount-1)的项。GridView负责处理标题菜单,这包括列菜单。但是GridView没有您要求的行为 要完成此行为,您应该实现它 正如我前面提到的,菜单由视图控制,如果您检查docs和sour

主语

在我的情况下,我可以删除所有复选框-这是错误的。它应该像Sencha GXT复选框网格:

说明: 1) 数据网格被渲染 2) 单击排序菜单,选择“列” 3) 以任意顺序隐藏某些列(例如,第4列,共5列) 4) 最后一个菜单项应该像屏幕截图上一样处于非活动状态

最后一个-I表示它不是id=(colCount-1)的项。

GridView负责处理标题菜单,这包括列菜单。但是GridView没有您要求的行为

要完成此行为,您应该实现它

正如我前面提到的,菜单由视图控制,如果您检查docs和source,您会注意到视图有一个名为colMenu的属性,它指向列show/hide menu。您可以通过监听事件来实现行为

我是如何做到这一点的:

...
// we need to wait until the grid is rendered, because colMenu doesn't exist
// until the grid and its view is rendered.
grid.on( 'afterrender', function() {

    this.view.colMenu.on( 'itemclick', function( item, e ){

        // active will contain visible columns
        var active = [], i;

        // iterate through all menu items to find checked ones
        for ( i = 0; i < this.items.items.length, i++ ) {
            if ( this.items.items[ i ].checked ) active.push( this.items.items[ i ] );
        };

        // if there is only one active one, disable it
        if ( active.length == 1 ) {
            active[ 0 ].disable();

        // if there is more then one, enable the disabled ones
        } else if ( active.length > 0 ) {
            for( i = 0; i < active.length; i++ ) {
                if ( active[ i ].disabled ) active[ i ].enable();
            }
        }

    // buffer is important for our itemclick event listener.
    // it'll wait 100ms after default itemclick event to finish its job.
    }, this.view.colMenu, { buffer : 100 } );
} );
。。。
//我们需要等待网格渲染,因为colMenu不存在
//直到渲染栅格及其视图。
on('afterrender',function(){
this.view.colMenu.on('itemclick',函数(item,e){
//活动将包含可见列
var-active=[],i;
//遍历所有菜单项以查找选中项
对于(i=0;i0){
对于(i=0;i
GridView负责处理标题菜单,其中包括列菜单。但是GridView没有您要求的行为

要完成此行为,您应该实现它

正如我前面提到的,菜单由视图控制,如果您检查docs和source,您会注意到视图有一个名为colMenu的属性,它指向列show/hide menu。您可以通过监听事件来实现行为

我是如何做到这一点的:

...
// we need to wait until the grid is rendered, because colMenu doesn't exist
// until the grid and its view is rendered.
grid.on( 'afterrender', function() {

    this.view.colMenu.on( 'itemclick', function( item, e ){

        // active will contain visible columns
        var active = [], i;

        // iterate through all menu items to find checked ones
        for ( i = 0; i < this.items.items.length, i++ ) {
            if ( this.items.items[ i ].checked ) active.push( this.items.items[ i ] );
        };

        // if there is only one active one, disable it
        if ( active.length == 1 ) {
            active[ 0 ].disable();

        // if there is more then one, enable the disabled ones
        } else if ( active.length > 0 ) {
            for( i = 0; i < active.length; i++ ) {
                if ( active[ i ].disabled ) active[ i ].enable();
            }
        }

    // buffer is important for our itemclick event listener.
    // it'll wait 100ms after default itemclick event to finish its job.
    }, this.view.colMenu, { buffer : 100 } );
} );
。。。
//我们需要等待网格渲染,因为colMenu不存在
//直到渲染栅格及其视图。
on('afterrender',function(){
this.view.colMenu.on('itemclick',函数(item,e){
//活动将包含可见列
var-active=[],i;
//遍历所有菜单项以查找选中项
对于(i=0;i0){
对于(i=0;i
别忘了接受答案别忘了接受答案