0

我有一个 EXT JS 4.2 网格,它有 2 列,它们使用渲染器将复选框放置在 1 列中,将单选按钮放置在另一列中。如何自动增加这些 HTML 输入的 ID,以便我可以通过 EXT JS 专门针对它们(参见“完整”和“主要”列)

    // Render library grid
var grid4 = Ext.create('Ext.grid.Panel', {
    xtype: 'gridpanel',
    id:'button-grid',
    store: data,
    columns: [
        {text: "Library", width: 170, sortable: true, dataIndex: 'name'},
        {text: "Market", width: 125, sortable: true, dataIndex: 'market'},
        {text: "Expertise", width: 125, sortable: true, dataIndex: 'expertise'},
        {text: 'Full', dataIndex:'isFull', renderer: function() {
            var rec = grid4.getStore().getAt(this.rowIndex);
            return "<input type='checkbox' id='"+rec+"' />";
        }},
        {text: 'Primary', dataIndex:'isPrimary', renderer: function() {
            return "<input type='radio' />";
        }},
    ],

    columnLines: false,
    selModel: selModel,

    // inline buttons
    dockedItems: [{
        xtype: 'toolbar',
        dock: 'bottom',
        ui: 'footer',
        layout: {
            pack: 'center'
        },
        items: []
    }, {
        xtype: 'toolbar',
        items: []
    }],

    width: 600,
    height: 300,
    frame: true,
    title: 'Available Libraries',
    iconCls: 'icon-grid',
    renderTo: Ext.get('library-grid')
});

更新: ID现在正在增加,谢谢!

现在,我还有另一个问题:当我检查 EXT 网格中的项目时,我没有看到已设置的已检查:已检查标志,我将如何执行类似于下面的代码的操作。我想检查元素是否被选中

                    if(document.getElementById("#isFull-"+record['index']+"").checked == true){
                    var myVar = true;
                }
4

1 回答 1

2

renderer自动接受一堆参数,其中一个是 rowIndex 。您应该能够这样做以提供所需的唯一 ID:

{
    text: 'Full', 
    dataIndex:'isFull', 
    renderer: function(value, meta, record, rowIndex, colIndex) 
    {
        return '<input type="checkbox" id="isFull-' + rowIndex + '" />';
    }
}

在此处查看更多信息:http ://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid.column.Column-cfg-renderer

于 2013-07-23T18:57:10.280 回答