2011-01-26 2 views
1

Je rencontre peu de problèmes avec extJS et EditorGridPanel.ExtJS: problèmes EditorGridPanel et ComboBox

J'ai créé EditorGridPanel avec des colonnes d'éditions: l'une d'elles est éditable. L'éditeur de cette colonne fonctionne correctement, mais quand je vérifie un champ en combo sur gridePanel, il insère une "mauvaise" valeur.

Ceci est mon code:

this.grid = new Ext.grid.EditorGridPanel({ 
    frame: true, 
    autoHeight: true, 
    id: 'grid-editMc', 
    clicksToEdit: 1, 
    loadMask: true, 
    columnLines: true, 
    store: this.getStore(), 
    sm: selmode, 
    cm: new Ext.grid.ColumnModel({ 
     columns: [{ 
      header: 'Преподаватель', 
      css: 'vertical-align:middle;', 
      dataIndex: 'teacher', 
      sortable: false, 
      editor: this.teacherEdit() 
     }], 

     defaultSortable: true 
    }), 
}) 

Par exemple, dans le magasin je record: id:4, teacher:'Mark'. Lorsque je change de combo dans la cellule de la grille, insérez 4 (pas 'Mark'). Je veux avoir une valeur de cellule 'id' et un texte 'teacher'.

Répondre

1

vous avez besoin d'un moteur de rendu pour votre zone de liste déroulante.

sur le modèle de la colonne, ajoutez un rendu de l'élément avec le combobox

[ 
     { 
      header: 'Преподаватель', 
      css:'vertical-align:middle;', 
      dataIndex: 'teacher', 
      sortable: false, 
      editor: this.teacherEdit(), 
       renderer:teacherRenderer 

     } 
    ] 

puis retourner la valeur que vous voulez pour le passé en valeur. Au lieu de renvoyer une constante ici, vous pouvez extraire un champ de l'enregistrement ou effectuer une recherche dans votre magasin pour obtenir la valeur que vous souhaitez afficher.

var teacherRenderer = function(value,metaData,record){ 
     // try record.data.teacher here 
     return "displayValue" 

}