ExtJS:向网格中添加的列插入值

Posted

技术标签:

【中文标题】ExtJS:向网格中添加的列插入值【英文标题】:ExtJS: insert value to added columns in a grid 【发布时间】:2015-07-19 00:20:39 【问题描述】:

我有一个包含 3 列 ['name', 'email', 'phone'] 的网格面板, 它的模型有 5 个字段

['name', 'email', 'phone','property','value'].

我正在寻找的是根据“属性”字段中的项目数及其来自“值”字段的值动态地将列插入网格面板。

我正在使用的示例代码是here。

我的问题是我不知道如何为每一行的新列填写数据。

这是网格最终的样子。

【问题讨论】:

【参考方案1】:

有几件事要做,还有改进的余地。我不想教(或责备)你,所以这是一个基于你的小提琴的工作示例。我添加了 cmets 来指导您那里发生的事情。


    text: 'add column',
    handler: function() 
        // Setup the columns, including the default ones
        var newColumns = [
             header: 'Name',  dataIndex: 'name' ,
             header: 'Email', dataIndex: 'email', flex: 1 ,
             header: 'Phone', dataIndex: 'phone' 
        ];

        // Iterate through store items
        Ext.Array.each(Ext.data.StoreManager.lookup('simpsonsStore').data.items, function(storeItem) 

            // Create array from given strings in property/value fields
            var columns = storeItem.get('property') ? storeItem.get('property').split(' ').join('').split(',') : null;
            var columnValues = storeItem.get('value') ? storeItem.get('value').split(' ').join('').split(',') : null;

            // Iterate through the columns array
            for(var i = 0; i < columns.length; i++) 
                // Create new column
                var col = 
                    header: columns[i], 
                    dataIndex: columns[i]
                ;

                // Check if column already added in the newColumns array
                var found = false;
                Ext.Array.each(newColumns, function(column) 
                    if (column.dataIndex == col.dataIndex)
                        found = true;
                );

                // Add column object if not found
                if (!found) 
                    newColumns.push(col);
                

                // Edit the current store item to add the given value
                storeItem.set(columns[i], columnValues[i]);
            
        );

        // Reconfigure columns on grid
        Ext.getCmp('gridpanel').reconfigure(Ext.data.StoreManager.lookup('simpsonsStore'), newColumns);

    

结果:

【讨论】:

以上是关于ExtJS:向网格中添加的列插入值的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 6. 将列添加到网格

Sequelize 不会将值插入到新添加的列中

ExtJS 间隔计时器获取数据并在网格中插入新行

在服务器上插入记录后,EXTJS 中的自动刷新网格

ExtJS 4 - 如何为网格的列添加背景颜色?

Extjs mvc 将记录添加到网格面板