J'ai une grille d'éditeur où si une cellule spécifique est mise au point (est en cours d'édition), une fenêtre contenant un panneau d'arbre apparaît permettant à l'utilisateur de choisir un nœud de l'arbre comme nouvelle valeur de la cellule. De cette façon, l'utilisateur ne modifie pas réellement la cellule en question, mais utilise la fenêtre pour choisir la nouvelle valeur. Cependant, j'ai des difficultés à définir la valeur de la cellule en question par programmation.Modifier par programme la valeur d'une cellule EditorGrid
Voici le code que j'utilise pour définir la place de la grille, y compris le modèle de la colonne qui choisit quel éditeur utiliser pour une cellule en fonction du type de valeur:
var editorCM = new Ext.grid.ColumnModel({
//config
,editors : {
//rest of editors
'id' : new Ext.grid.GridEditor(new Ext.form.TextField({readOnly : true}))
}
,getCellEditor : function(col, row) {
//choose editor depending on the type value of a cell
}
})
var editorGrid = new Ext.grid.EditorGridPanel({
//rest of config
,cm : editorCM
})
Voici mon code pour changer la cellule de valeur une fois que l'utilisateur choisit à partir de l'arbre.
function submitNode(newValue) {
var temp = editorGrid.GetSelectionModel().getSelectedCell(); //returns array containing column and row position of selected cell, which value we want to change.
//temp[1] = column index, temp[0] = row index
//Gets the cell editor at specific position and sets new value for that cell
editorGrid.getColumnModel().getCellEditor(temp[1], temp[0]).setValue(newValue);
}
J'ai aussi essayé quelques autres moyens (y compris tous setValue (newValue)), mais sont venus les mains vides. J'ai regardé à travers l'API et les forums ExtJS pour trouver des indices, mais je suis également venu les mains vides.