1. 程式人生 > >Extjs4.2 GridPanel中顯示單選按鈕

Extjs4.2 GridPanel中顯示單選按鈕

spa check mod extend after get radi tco blog

技術分享

效果:如上圖。

代碼:其中需要顯示單選按鈕的列

{
                    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); }); } });

Extjs4.2 GridPanel中顯示單選按鈕