8
votes

EXT-JS: Comment désactiver l'édition de cellules pour des cellules individuelles dans une grille?

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: xxx

Cependant, pour cette grille, plusieurs cellules ne sont pas censées être modifiées.

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.

update

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).


0 commentaires

3 Réponses :


6
votes

Vous pouvez spécifier la colonnemodel pour déclarer des colonnes modifiables et non modifiables: xxx pré>

dans cet exemple colonne 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>

mise à jour: stry> p>

Evitez l'édition de ligne: p>

    grid.on('beforeedit', function(event) {
        if (event.row == 0) {
             this.store.rejectChanges();
             event.cancel = true;
         }
    }, grid);


1 commentaires

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?



13
votes

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 Avéditer gestionnaire. Et lorsque l'événement est en cours de cuisson, vérifiez quelle ligne est éditée. Si d'abord - retour false : xxx

Découvrez Docs pour Avédit .

Mise à jour

DOCS dis dire que Avéditer a un tel ensemble de params: xxx

mais il y a une erreur. La solution correcte est la suivante: xxx

J'ai mis à jour un exemple en raison de ce fait.


3 commentaires

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 devrait être E , et l'éditeur 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!



0
votes

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: xxx


0 commentaires