extjs rowexpander如何展开所有

extjs rowexpander如何展开所有,extjs,grid,expander,Extjs,Grid,Expander,我正在使用Ext.ux.grid.RowExpander var expander = new Ext.ux.grid.RowExpander({ tpl : new Ext.Template( '<p>{history}</p>' ) }); 现在我希望所有的扩展行都用deafult展开 我试图使用expander.expandRow(grid.view.getRow(0))(我想如果我成功了,我将能够使用for循环:),但我得到了一个错误 this.main

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

var expander = new Ext.ux.grid.RowExpander({
  tpl : new Ext.Template(
 '<p>{history}</p>'
 )
});
现在我希望所有的扩展行都用deafult展开

我试图使用
expander.expandRow(grid.view.getRow(0))(我想如果我成功了,我将能够使用for循环:),但我得到了一个错误

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

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

你可以通过一个循环来完成,这很简单

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

如果网格使用DirectStore或其他RPC机制,则可能需要侦听存储的加载事件:

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

顺便说一句:它应该是“i<…”而不是“i”。您可以声明一个分组对象,然后从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,
    ...
    // collapse/expand all botton
    tbar: [{
                text: 'collapse all',
                handler: function (btn) {        
                    grouping.collapseAll();
                }
            },{
                text: 'expand all',
                handler: function (btn) {        
                    grouping.expandAll();
                }
            }],
然后在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,
    ...
    // collapse/expand all botton
    tbar: [{
                text: 'collapse all',
                handler: function (btn) {        
                    grouping.collapseAll();
                }
            },{
                text: 'expand all',
                handler: function (btn) {        
                    grouping.expandAll();
                }
            }],
它将添加两个按钮,用于展开/折叠所有组。
如果希望在默认情况下展开/折叠所有内容,请注意上面的“startCollapsed”变量。

在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));
        }
    }
}
函数展开(){
var expander=grid.plugins[0];
var store=grid.getStore();
对于(i=0;i
m…我遇到了与我问题中相同的错误。也许我的
扩展器不正确?您是否已将扩展器添加到网格上的
插件配置中?extjs 3.3.1。我的网格和扩展器工作正常,我只想在默认情况下扩展它(我猜是在渲染时)上述代码在我的3.3 extjs应用程序上运行良好,请尝试将
扩展器
替换为
网格。插件
没有此类方法expandRow,seehttps://docs.sencha.com/extjs/6.2.0/modern/Ext.grid.plugin.RowExpander.htmlI 必须在上使用
grid.getView()('refresh',…
改为extjs4.1和
grid.plugins
是一个数组,我在其中搜索了扩展器。