使用 RowExpander 将普通网格更改为网格

Posted

技术标签:

【中文标题】使用 RowExpander 将普通网格更改为网格【英文标题】:Changing a normal grid into a grid with RowExpander 【发布时间】:2013-07-30 20:03:01 【问题描述】:

所以我在这里有工作视图,可以很好地创建我的网格。

Ext.define('AM.view.user.List' ,
    extend: 'Ext.grid.Panel',
    alias: 'widget.userlist',
    title: '<center>Results</center>',
    store: 'User', 
    dockedItems: [
        xtype: 'toolbar',
        dock: 'bottom',
        items: [
             xtype: 'tbtext',  text: 'Loading...', itemId: 'recordNumberItem'  ,
            '->',
             text: 'Print', itemId: 'print' ,
            '-',
             text: 'Export', itemId: 'export' 
        ]
    ],
    initComponent: function() 
        this.columns = [
            header: 'Name',  dataIndex: 'name', flex: 4, tdCls: 'grid_cell',
            header: 'ID', dataIndex: 'ID', flex: 2, tdCls: 'grid_cell',
            header: 'Mid Name', dataIndex: 'mid_name', flex: 3, tdCls: 'grid_cell',
            header: 'Last Name', dataIndex: 'last_name', flex: 4, tdCls: 'grid_cell',
            header: 'Address', dataIndex: 'adress', flex: 3, tdCls: 'grid_cell'
        ];
        this.callParent(arguments); //Calls the parent method of the current method in order to override 

        var store = this.getStore(); //Retrieving number of records returned
            textItem = this.down('#recordNumberItem');
            textItem.setText('Number of records: ' + store.getCount());

            //var val = Ext.getCmp('criteria_1').getValue();
            //store.filter('ID', val); 

       
);

我想将网格中的每一行转换为可展开和可折叠,如 Sencha Docs 中 Row Expander 下所示:http://docs.sencha.com/extjs/4.2.1/#!/example/build/KitchenSink/ext-theme-neptune/

我已尝试添加插件,但无法使其正常工作。有什么想法吗?

【问题讨论】:

您应该包含您尝试过的插件代码并解释“无法使其工作”的含义。意外行为?抛出异常? 【参考方案1】:

像这样使用插件配置:

Ext.define('AM.view.user.List',
   extend: 'Ext.grid.Panel',
   //other configs
   plugins: [
      ptype: 'rowexpander',
      rowBodyTpl: ['field']
   ]
);

查看工作示例on jsFiddle。此外,Sencha Docs 在右侧提供了一个“代码预览”面板,显示他们使用的代码。

我在this answer 中读到,您不能在 initComponent 中配置插件,尽管这是针对 ExtJS 4.1 的,当时 rowexpander 仍然是 ux。我不确定它在 4.2 中的相关性。

【讨论】:

我需要在第二个网格行 rowBodyTpl 请帮帮我【参考方案2】:

这已经很晚了,但对于任何需要另一行的人来说:

Ext.define('AM.view.user.List',
   extend: 'Ext.grid.Panel',
   //other configs
   plugins: [
      ptype: 'rowexpander',
      rowBodyTpl: ['<p><b>Field 1:</b> field1</p><br>',
                   '<p><b>Field 2:</b> field2</p>']
  ]
);

【讨论】:

以上是关于使用 RowExpander 将普通网格更改为网格的主要内容,如果未能解决你的问题,请参考以下文章

在屏幕调整大小时将布局从行更改为网格

将打印媒体的引导网格从 col-xs 更改为 col-sm

xml Magento - 将类别产品网格布局从3列更改为4列#M1

刷新网格后剑道ui网格可分页大小发生变化

如何在 MODx 网格中使用 ExtJS 插件“行扩展器”

如何在颤动中将格式从列表视图更改为网格视图?