12

我有一个网格面板,我需要根据复选框的值在网格面板中显示/隐藏列。如果选中该复选框,我需要在网格中显示列,如果未选中,我需要隐藏网格中的列。

这是我的代码

var chkEnableDisplayResponsibilityForAction = '<%=Session["chkEnableDisplayResponsibilityForAction"]%>';

 var flags = Boolean.parse(chkEnableDisplayResponsibilityForAction);
 var flags1 = !Boolean.parse(chkEnableDisplayResponsibilityForAction)

 var colModel = new Ext.grid.ColumnModel([
 { header: "PricePlanID", width: 100, sortable: true, dataIndex: 'PricePlanID', hidden: flags, hideable: flags1 },
  ]);  

当我刷新页面时,我无法根据复选框的值切换列。但是当我登录并注销时,我可以在网格面板中看到更改。谁能帮我刷新网格面板中的列值?

4

6 回答 6

25

如果看一下 ExtJS API,特别是ColumModel有一个setHidden方法,它会隐藏/显示GridPanel.

myGrid.getColumnModel().setHidden(0, true);

您还应该挂钩onchange您的复选框的事件,以便您可以显示或隐藏该列

于 2009-11-25T15:29:27.260 回答
13

在 Ext JS 4.1 中,要隐藏列,您可以使用:

grid.columns[0].setVisible(false);

看起来 getColumnModel() 及其 setHidden() 方法不再是网格的一部分: http ://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.Panel

于 2012-07-25T12:18:22.273 回答
3

您可以使用列标题菜单显示/隐藏列 - 您可以选择要显示的列。无论如何,如果你想显示/隐藏一列,试试这个

myGrid.getColumnModel().setHidden(0, true);
于 2009-11-25T15:30:06.900 回答
2

在 ExtJS 4 中,可以访问您的网格面板,然后访问作为 Column 对象数组的 columns 属性。

从那里您可以使用数组迭代器方法 ( http://www.diveintojavascript.com/core-javascript-reference/the-array-object ) 来执行操作。

在下面的示例中,我根据标题名称隐藏和显示了一些列,但您显然可以根据任何 Column 属性执行操作。

var grid = Ext.getCmp( 'my_grid_panel' );

grid.columns.forEach( function( col ) {
   if( ( col.text == "Foo" ) || ( col.text == "Bar" ) ) {
      col.setVisible( true );
   } else if( col.text == "Baz" ) {
      col.setVisible( false );
   }
});
于 2012-07-25T15:46:09.407 回答
1

上面的答案我觉得还不错。但是让我给你一个建议。

1) 在ExtJS 4.x中推荐使用Ext.ComponentQuery `s 方法而不是Ext.getCmp()

2)要隐藏/显示网格的列,您可以使用以下代码

Ext.ComponentQuery.query('grid gridcolumn[dataIndex^="service"]')[0].hide()

或显示

Ext.ComponentQuery.query('grid gridcolumn[dataIndex^="service"]')[0].show()

它应该解决隐藏/显示网格中的任何列。

这里grid是你的 grid ,它可能是 id 或 xtype 等。

于 2016-08-16T09:00:39.170 回答
0
setVisibleColumn       : function(name, flag) {
    name = Ext.Array.from(name);
    var column;

    for (var i = 0; i < name.length; i++) {
        column = this.getColumn(name[i]);
        if (column) {
            flag ? column.show() : column.hide();
        }
    }

}
于 2017-07-17T19:17:22.627 回答