在 ExtJs 中创建具有两个比例的网格

Posted

技术标签:

【中文标题】在 ExtJs 中创建具有两个比例的网格【英文标题】:Create a grid with two scales in ExtJs 【发布时间】:2017-06-14 09:25:58 【问题描述】:

我是 ExtJS 的新手,我需要您的帮助来创建一个具有两个比例的网格,第一个在网格的第一列(财务、技术..),第二个在网格的第一行(J+1, J+2..),并且对于每个列/行索引,都有一个组合框来进行评估,如下所示:

show image

谁能帮帮我? 非常感谢。

【问题讨论】:

是否应该代替默认的图例项(即列名和行号)或附加/作为第一行和第一列中真正停靠但不可用的单元格? 是的,这正是我要解释的,感谢您的回复! 【参考方案1】:
Ext.onReady(function () 
    var renderer = function (val) 
    var loop = ['Barney','Fred'];
    var str = '<select name="first">';
    for(var i = 0; i < loop.length ; i++)
         if(val === loop[i])
             str += '<option value="'+loop[i]+'" selected>'+loop[i]+'</option>';
         else
           str += '<option value="'+loop[i]+'">'+loop[i]+'</option>';
         

    
    str += '</select>';
    return str;

    ;
    var rt = Ext.data.Record.create([
        name: 'id'
    , 
        name: 'fullname'
    , 
        name: 'first'
    ]);
    var myStore = new Ext.data.Store(
        // explicitly create reader
        reader: new Ext.data.ArrayReader(
                idIndex: 0 // id for each record will be the first element
            ,
            rt // recordType
        )
    );
    var grid = new Ext.grid.GridPanel(
        renderTo: Ext.getBody(),
        store: myStore,
        colModel: new Ext.grid.ColumnModel(
            defaults: 
                width: 120,
                sortable: true
            ,
            columns: [
                header: '',
                dataIndex: 'fullname'
            , 
                header: '1',
                dataIndex: 'first',
                renderer : renderer
            , 
                header: '2',
                dataIndex: 'first',
                renderer : renderer
            , 
                header: '3',
                dataIndex: 'first',
                renderer : renderer
            , 
                header: '4',
                dataIndex: 'first',
                renderer : renderer
            ]
        ),
        //sm: new Ext.grid.RowSelectionModel(singleSelect:true),
        width: 600,
        height: 300,
        frame: true,
        title: 'Framed with Row Selection and Horizontal Scrolling',
        iconCls: 'icon-grid'
    );
    var myData = [
        [1, 'Fred Flintstone', 'Fred'], // note that id for the record is the first element
        [2, 'Barney Rubble', 'Barney']
    ];
    myStore.loadData(myData);
);

请参考fiddle。

希望这会有所帮助。

【讨论】:

渲染绝对是我想要的,但我认为我不能在 ExtJs 3 上做到这一点(我忘了提到我使用的是 3.4.0 版本)。谢谢! 让我检查一下 ExtJS 3.4 的可行性 太棒了!这就是我要找的,非常感谢!!

以上是关于在 ExtJs 中创建具有两个比例的网格的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs 模态面板控制器看不到我的网格

ExtJs 4.1 网格的分组功能启用和禁用问题

缩放同一对象的两个网格

ExtJs 同一页面上的两个或多个网格

如何在 ExtJs 3.4 中创建不可编辑的 Html 编辑器以显示一些具有 < , > 符号的数据?

在两个不同的表中创建具有相同列的视图 SQL