ExtJs rowExpander插件 - 根据行数据自动扩展

时间:2017-06-02 00:24:48

标签: extjs

我正在努力完成一些听起来很简单的事情,但我找不到解决方案。

我在缓冲商店和rowExpander插件前面有一个网格。一切都运行正常,但我想在商店中根据属性(在这种情况下是一个简单的布尔值)打开扩展器默认值。通常情况下,我最初会遍历所有记录,但由于它是一个缓冲存储,我最初没有所有记录。

我可以挂入bufferedRenderer吗?

有什么建议吗?提前谢谢!

以下小提琴具有以下代码,当answercount>时将尝试展开。 1

            prefetch: function (store, records, successful, operation, eOpts) {
            console.log('in prefetch')
            var grid = Ext.ComponentQuery.query('#testGrid')[0];
            var pluggy = grid.getPlugin('rowexpander')

            for (var i in records) {
                if (records[i].get('replycount') > 1) {
                    console.log(records[i].get('replycount') + ': is greater than 1...so expand');
                    var rIndex = store.indexOf(records[i]);
                    pluggy.toggleRow(rIndex, records[i]);
                } else {
                    //console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
                }
            }
        }

添加小提琴:link

1 个答案:

答案 0 :(得分:0)

您可以使用load ExtJS Store事件。只要加载记录,就会触发此事件。

load: function (store, records, successful, operation, eOpts) {
            var grid = Ext.ComponentQuery.query('#testGrid')[0];
            var pluggy = grid.getPlugin('rowexpander')
            for (var i in records) {
                if (records[i].get('replycount') > 1) {
                    console.log(records[i].get('replycount') + ': is greater than 1...so expand');
                    var rIndex = store.indexOf(records[i]);
                    pluggy.toggleRow(rIndex, records[i]);
                } else {
                    //console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
                }
            }
        }

请参阅此link。希望这可以帮助。 fiddle

我尝试过不同的方法。您可以在没有dataindex的情况下编写一列,并在该列的renderer上展开原始列。

{
            sortable: false,
            //hidden : true,
            width : 0,
            hideable : false,
            renderer : function (v, metaData, record, rowIndex, colIndex, store, view) {
                 Ext.defer(function(){
                    try{
                        var grid = view.up('grid');
                         var pluggy = grid.getPlugin('rowexpander');
                          if (record.get('replycount') > 1) {
                            pluggy.toggleRow(rowIndex, record);
                        } else {
                            //console.log(records[i].get('replycount') + ': is not greater than 1...so no expand');
                        }
                    }catch(e){}
                 },1000);
            }
        }

我更新了同样的小提琴。

注意:这只是一种解决方法。