2017-10-04 2 views
1

j'ai donc une grille habituelle, avec quelques colonnes:ExtJS GridPanel avec RadioButton sur les colonnes

    { 
         xtype   : 'gridpanel', 
         mode   : "MULTI", 
         region   : 'center', 
         title   : "grid", 
         id    : 'datagridResult', 
         margin   : '10 5 5 5', 

        columns : [ 
           { 
            xtype : 'gridcolumn', 
            dataIndex: 'TEST', 
            flex  : 0.25 
           }, 
           { 
            xtype : 'gridcolumn', 
            dataIndex: 'Test2' 
            flex  : 2 
           }, 
           //... 

Ce que je veux est d'ajouter 3 autres colonnes qui sont radiobuttons (un bouton par colonne). J'ai essayé quelque chose comme ceci:

       { 
            xtype : 'gridcolumn', 
            text  : "FOR" 
            dataIndex: 'for', 
            flex  : 1, 
            editor: { 
             xtype  : 'radiofield', 
             name  : 'Regex', 
             inputValue: 'Checked' 
            }, 
           } 

Et cela ne fonctionne pas. Donc je suis ici pour demander des sugestions.

Répondre

1

Et cela ne fonctionne pas. Donc, je suis ici pour demander des sugestions

En ExtJS ont xtype: 'widgetcolumn'. Une colonne de widget est configurée avec un objet de configuration de widget qui spécifie un xtype pour indiquer quel type de Widget ou de composant appartient aux cellules de cette colonne. J'ai créé une démo de Sencha Fiddle. Cela montrera comment ça marche. J'espère que ceci vous aidera.

Ext.create('Ext.data.Store', { 
    storeId: 'simpsonsStore', 
    fields: ['name', 'email', 'phone', { 
     name: 'checked', 
     type: 'boolean', 
     defaultValue: true 
    }], 
    data: [{ 
     name: 'Lisa', 
     email: '[email protected]', 
     phone: '555-111-1224' 
    }, { 
     name: 'Bart', 
     email: '[email protected]', 
     phone: '555-222-1234' 
    }, { 
     name: 'Homer', 
     email: '[email protected]', 
     phone: '555-222-1244' 
    }, { 
     name: 'Marge', 
     email: '[email protected]', 
     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() 
}); 
+0

Merci, précisément ce que je voulais – Chazz1

+0

Entièrement bienvenue ☺ –