Extjs 6.0 RadioButton专栏

时间:2017-10-12 10:58:43

标签: javascript extjs radio-button extjs6

我有一个非常具体的案例,我需要在数据网格上有5个不同的列,其中一个列只有一个单选按钮。

因为在ExtJS上我没有找到任何“radiocolumn”元素,我自己创建了它,并且是这样的:

Ext.define('Ext.grid.column.RadioColumn', {
extend: 'Ext.grid.column.CheckColumn',

alternateClassName: 'Ext.ux.RadioColumn',

alias: 'widget.radiocolumn',

groupField: undefined,

allowUncheck: false,

renderer : function(value, meta) {

    var classer = "PROBLEM_UNCHECKED";

    meta.innerCls = "";
    if (this.disabled) {
        meta.tdCls += ' ' + this.disabledCls;
    }
    if (value) {
        classer = "PROBLEM_CHECKED";
    }

    return "<span  class='"+ classer + "' role='button' tabIndex='0'></span>";
},

所以我的问题是,你可以看到我的Classer值是“PROBLEM_CHECKED”和“PROBLEM_UNCHECKED”而不是它们的真实类值。我已经搜索了所有的ext和online,我找不到radiobuttons的默认类值(ext通常使用),即使使用inpsect元素,此元素检索的类与常规的radiobutton类不匹配。

2 个答案:

答案 0 :(得分:0)

您可以使用xtype widgetcolumn将单选按钮添加到网格列。 Here's示范的一个小例子。

答案 1 :(得分:0)

在ExtJS中有'widgetcolumn'组件,你可以使用它。

窗口小部件列配置了窗口小部件配置对象,该对象指定xtype以指示此列的单元格中属于哪种类型的窗口小部件或组件。

我创建了一个Sencha Fiddle演示。它将展示如何工作。希望这会对你有所帮助。

Ext.create('Ext.data.Store', {
    storeId: 'simpsonsStore',
    fields: ['name', 'email', 'phone', {
        name: 'checked',
        type: 'boolean',
        defaultValue: true
    }],
    data: [{
        name: 'Lisa',
        email: 'lisa@simpsons.com',
        phone: '555-111-1224'
    }, {
        name: 'Bart',
        email: 'bart@simpsons.com',
        phone: '555-222-1234'
    }, {
        name: 'Homer',
        email: 'homer@simpsons.com',
        phone: '555-222-1244'
    }, {
        name: 'Marge',
        email: 'marge@simpsons.com',
        phone: '555-222-1254'
    }]
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [{
        text: 'Name',
        dataIndex: 'name'
    }, {
        text: 'Email',
        dataIndex: 'email',
        flex: 1
    }, {
        text: 'Phone',
        dataIndex: 'phone'
    }, {
        text: 'Status',
        width: 150,
        xtype: 'widgetcolumn',
        dataIndex: 'checked',
        onWidgetAttach: function (column, widget, record) {
            widget.down(`[inputValue=${record.get('checked')}]`).setValue(true);
        },
        widget: {
            xtype: 'radiogroup',
            items: [{
                boxLabel: 'Yes',
                inputValue: true
            }, {
                boxLabel: 'No',
                inputValue: false
            }]
        }
    }],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});