Extjs4.2 GridPanel中显示单选按钮

效果:如上图。

代码:其中需要显示单选按钮的列

{
                    dataIndex: 'FeeModel',
                    text: '收費模式',
                    flex: 1,
                    align: 'left',
                    radioValues: [{ "inputValue": "1", "boxLabel": "高級收費模式" }, { "inputValue": "2", "boxLabel": "简单收费模式" }, { "inputValue": "3", "boxLabel": "不收费模式" }],
                    renderer:function(value, metaData, record, rowIndex, colIndex, store, view) {  
                        var column = view.getGridColumns()[colIndex],  
                            html = '';  
                        Ext.each(column.radioValues, function(rec) {  
                            var inputValue = rec.inputValue;  
                            var boxLabel = rec.boxLabel;  
                            var checked = inputValue == value;  
                            var name =  view.id+"_Grdi_Column_Radio_"+record.data.Id+"_"+rowIndex;  
                            html += "<input name='" + name + "' type='radio' " + (checked ? "checked" : "") + "  colIndex='" + colIndex + "'  rowIndex='" + rowIndex + "' value='" + inputValue + "'/>" + boxLabel;
                        });  
                        return html;  
                    },
                    tdCls: 'tdValign'

                }

  给表格加入事件

  me.on('afterrender', function (grid, eOpts) {
           
            this.el.on('click', function (event) {
                var radio = event.getTarget('input[type="radio"]');
                if (radio) {
                    var rowIndex = radio.getAttribute("rowIndex");
                    var colIndex = radio.getAttribute("colIndex");
                    this.getStore().getAt(rowIndex).set('FeeModel',radio.value);
                }
            }, this);
        });

  表格全部代码:

Ext.define('Yxd.view.FeeModelSet.ProjectGrid', {
    extend: 'Yxd.ux.BaseGridPanel',
    xtype: 'FeeModelSet_ProjectGrid',
    border: 0,
   initComponent: function () {
        var me = this;
        var store = Ext.create("Yxd.store.Project", {
            autoLoad: true

        });
     
        Ext.applyIf(me, {
            store: store,
            columns: [
               {
                   flex: 1,
                   dataIndex: 'Id',
                   text: 'Id',
                   hidden: true,

                   align: 'center'
               }, {
                   text: '序号',
                   xtype: 'rownumberer',
                   width: 50,
                   tdCls: 'tdValign',
                   align: 'center'
               },
                {
                    dataIndex: 'Name',
                    text: '项目名称',
                    flex: 1,
                    align: 'left',
                    tdCls: 'tdValign'

                }, {
                    dataIndex: 'FeeModel',
                    text: '收費模式',
                    flex: 1,
                    align: 'left',
                    radioValues: [{ "inputValue": "1", "boxLabel": "高級收費模式" }, { "inputValue": "2", "boxLabel": "简单收费模式" }, { "inputValue": "3", "boxLabel": "不收费模式" }],
                    renderer:function(value, metaData, record, rowIndex, colIndex, store, view) {  
                        var column = view.getGridColumns()[colIndex],  
                            html = '';  
                        Ext.each(column.radioValues, function(rec) {  
                            var inputValue = rec.inputValue;  
                            var boxLabel = rec.boxLabel;  
                            var checked = inputValue == value;  
                            var name =  view.id+"_Grdi_Column_Radio_"+record.data.Id+"_"+rowIndex;  
                            html += "<input name='" + name + "' type='radio' " + (checked ? "checked" : "") + "  colIndex='" + colIndex + "'  rowIndex='" + rowIndex + "' value='" + inputValue + "'/>" + boxLabel;
                        });  
                        return html;  
                    },
                    tdCls: 'tdValign'

                }]

        });

        me.callParent(arguments);
        me.on('afterrender', function (grid, eOpts) {
           
            this.el.on('click', function (event) {
                var radio = event.getTarget('input[type="radio"]');
                if (radio) {
                    var rowIndex = radio.getAttribute("rowIndex");
                    var colIndex = radio.getAttribute("colIndex");
                    this.getStore().getAt(rowIndex).set('FeeModel',radio.value);
                }
            }, this);
        });
     }
  
});

 

posted @ 2017-05-15 18:41  沈阳晓东  阅读(1508)  评论(0编辑  收藏  举报