extjs 定义grid列的时候 如何根据某个条件隐藏某列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了extjs 定义grid列的时候 如何根据某个条件隐藏某列相关的知识,希望对你有一定的参考价值。

我定义列的代码
var author = "":
var setColumns =function ()
var cols = [];
cols.push(title:'选択',indexname:"",textalign:'center',width:50
,formatter:function (v,rowdate,rownum,td)
v=v==1?'checked':'';
return '<input type="checkbox" onclick="uncheckAll()" '+v+' id=\'check'+rownum+'\' EventSortID=\''+rowdate.EventSortID+'\'/>';

);
cols.push(title:'顺番',indexname:"EventSortID",textalign:'center',width:40
,formatter:function (v,rowdate,rownum,td) return v
);

我根据前台获得author的值 有可能是1或是0
如何在定义选択这列的时候 根据author的值在判断 选択'这列是否显示或是隐藏
1的时候显示 0的时候隐藏

如果修改上面的代码
请大侠们帮忙 在线等 急

参考技术A var author = "":
var setColumns =function ()
var cols = [];
//下面加一个if 判断author是不是等于1
if (author==1) cols.push(title:'选択',indexname:"",textalign:'center',width:50
,formatter:function (v,rowdate,rownum,td)
v=v==1?'checked':'';
return '<input type="checkbox" onclick="uncheckAll()" '+v+' id=\'check'+rownum+'\' EventSortID=\''+rowdate.EventSortID+'\'/>';

);
cols.push(title:'顺番',indexname:"EventSortID",textalign:'center',width:40
,formatter:function (v,rowdate,rownum,td) return v
);
本回答被提问者和网友采纳

Extjs Grid - 如何在渲染器函数中获取列的宽度

【中文标题】Extjs Grid - 如何在渲染器函数中获取列的宽度【英文标题】:Extjs Grid - How to get width of column in renderer function 【发布时间】:2013-10-03 05:33:58 【问题描述】:

我有一个网格面板和我的专栏之一

 columns: [
        ...
         text: 'Name',  dataIndex: 'name' , width: 200,
             renderer: function (value) 
                  // how to get width of this column (200)
                  //alert(this.width); // this is width of gridpanel
             
        
        ...
 ],

如何获取此列的宽度,谢谢。

【问题讨论】:

【参考方案1】:

可以肯定,这不是理想的方法,但它确实有效。除了值之外,还有许多其他值传递给渲染器函数。通过 dom 检查,这将为您提供列宽,但我不认为在他们更新 ExtJS 时我会相信它可以工作:

renderer: function (value, metaData, record, rowIndex, colIndex, store, view) 
    return view.ownerCt.columns[colIndex].getWidth();

或者,您可以使用组件查询来获取网格面板视图,使用行索引查找列,然后以相同的方式获取其宽度:

renderer: function (value, metaData, record, rowIndex, colIndex, store, view) 
        var grid = Ext.ComponentQuery.query('#gridId')[0];
        return grid.columns[colIndex].getWidth();
    

我真的不知道在这种情况下什么是更好的选择,也不知道为什么他们通过 gridview 而不是 gridpanel 作为渲染器函数中的视图。无论如何,这应该让你开始,祝你好运。

【讨论】:

以上是关于extjs 定义grid列的时候 如何根据某个条件隐藏某列的主要内容,如果未能解决你的问题,请参考以下文章

extjs如何获取Grid中某一行某一列的值

Extjs Grid - 如何在渲染器函数中获取列的宽度

Extjs grid里某个column的xtype为combobox,怎样在页面ready的时候加载combobox下拉列表理的数据?

关于ExtJS的grid store加载的问题,grid改变列之后,用grid.reconfigure追加列,只加载新追加列的数据

extjs中设置列的编辑属性,用到Ext.grid.GridEditor?

关于extjs grid复制粘贴功能