extjs rowexpander如何扩展所有

时间:2011-07-15 06:38:43

标签: extjs grid expander

我正在使用Ext.ux.grid.RowExpander

var expander = new Ext.ux.grid.RowExpander({
  tpl : new Ext.Template(
 '<p>{history}</p>'
 )
});

它在我的网格中使用:

 var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            expander,
        ...

现在我希望所有扩展行都被deafult扩展。

我正在尝试使用expander.expandRow(grid.view.getRow(0));(我想如果我做到了,我将能够使用for循环:)但我收到错误

this.mainBody is undefined @ ***/ext/ext-all.js:11

请帮我扩展网格的所有行!谢谢!

4 个答案:

答案 0 :(得分:3)

你可以用一个循环来做这个,这很简单......

for(i = 0; i <= pageSize; i++) {
   expander.expandRow(i);
}

其中pageSize是网格中每页的记录数。或者,你可以使用商店的数量(可能是一个更具伸缩性的解决方案)......

for(i = 0; i <= grid.getStore().getCount(); i++) {
    expander.expandRow(i);
}

答案 1 :(得分:3)

在4.1.3中我使用这种方法

function expand() {
    var expander = grid.plugins[0];
    var store = grid.getStore();

    for ( i=0; i < store.getCount(); i++ ) {
        if (expander.isCollapsed(i)) {
            expander.toggleRow(i, store.getAt(i));
        }
    }
}

答案 2 :(得分:1)

如果你的网格使用DirectStore或其他一些RPC机制,你可能想要监听商店的加载事件:

grid.store.addListener('load', function() {
  var expander = grid.plugins;
  for(i = 0; i < grid.getStore().getCount(); i++) {
    expander.expandRow(i);
  }
}

顺便说一下:它应该是“i&lt; ...”而不是“i&lt; = ...”。

答案 3 :(得分:1)

您可以声明分组对象,然后在GridPanel中调用它:

// grouping
var grouping = Ext.create('Ext.grid.feature.Grouping',{
    startCollapsed: true, // sets the default init collapse/expand all
});

var grid = new Ext.grid.GridPanel({
    store: store,
    columns: [
        expander,
    ...

然后在GridPanel的正文中添加此代码:

    // collapse/expand all botton
    tbar: [{
                text: 'collapse all',
                handler: function (btn) {        
                    grouping.collapseAll();
                }
            },{
                text: 'expand all',
                handler: function (btn) {        
                    grouping.expandAll();
                }
            }],

它会添加两个按钮来展开/折叠所有组。 如果您希望在默认情况下展开/折叠所有内容,请注意上面的“startCollapsed”变量。