Je construis maintenant une application Web avec EXT-JS 4.0.2, et j'utilise une grille modifiable pour contrôler les données à afficher pour une table sur la même page.
Pour rendre la grille modifiable, je suivi de la documentation de l'API et utilisé ce qui suit: p> Cependant, pour cette grille, plusieurs cellules ne sont pas censées être modifiées. P> i Peut simplement laisser le gestionnaire d'événements modifier les données à droite une fois que cela est changé dans la grille, mais cela semble être hacable, difficile à maintenir et illisible. Y a-t-il un meilleur moyen de faire cela? J'ai lu l'API mais ne peut pas trouver d'attributs utiles. P> update strong> p> comme pour cette application particulière, il suffit de désactiver la première ligne. Mais je suis également intéressé à choisir plusieurs grilles et ne les faites pas éditable (imaginez un jeu Sudoku avec une grille). P> P>
3 Réponses :
Vous pouvez spécifier la colonnemodel pour déclarer des colonnes modifiables et non modifiables: dans cet exemple colonne Evitez l'édition de ligne: p> ID code> est invisible, colonnes 1 et 2 modifiables (avec texte et Les éditeurs de numéro) et la colonne 3 n'est pas modifiable. p>
grid.on('beforeedit', function(event) {
if (event.row == 0) {
this.store.rejectChanges();
event.cancel = true;
}
}, grid);
Merci! Cependant, j'utilise un modèle de colonne, mais je veux faire la première rangée non modifiable. Y a-t-il des manières similaires?
Comme je l'ai compris des commentaires, vous voulez faire une première ligne non modifiable. Il y a une solution laide mais rapide. Attribuez à votre plugin Découvrez Docs pour Mise à jour forte > P> DOCS dis dire que mais il y a une erreur. La solution correcte est la suivante: p> J'ai mis à jour un exemple en raison de ce fait. P> p> Avéditer code> gestionnaire. Et lorsque l'événement est en cours de cuisson, vérifiez quelle ligne est éditée. Si d'abord -
retour false code>:
Avédit code>. P>
Avéditer code> a un tel ensemble de params: p>
J'ai lu le doc et cela semble être génial. Cependant, mon E.ROWIDX n'est pas défini lorsque j'essaie de l'alerter. Peut-être que quelque chose ne va pas avec ma grille? Merci!
@Ziyao, c'est parce qu'il y a une erreur dans la documentation. Le premier param définitif dans avant code> devrait être
E code>, et l'éditeur
code> doit être à la deuxième place. J'ai mis à jour ma réponse.
Wow, ça bascule! Je me demande comment vous avez trouvé cette erreur, mais cela résout vraiment mon problème. Merci!
Comme Ziyao Wei a mentionné la documentation de l'événement à l'avant-mort est fausse. Toutefois, vous devez faire référence au paramètre "Editeur" pour obtenir l'index de la ligne et d'autres valeurs, pas le paramètre d'objet premier 'E'.
Exemple mis à jour: