Désactiver les lignes de Flex DataGrid
À moins que je suis absent quelque chose d'évident ici, il n'y a aucun moyen de disbabling une ou plusieurs lignes dans un DataGrid. Je m'attends à une disabledRows ou disabledRowIndidices bien sur la grille de données ou une Liste de composant, mais qui ne semblent pas exister.
J'ai trouvé un "rendererArray" la propriété, qui est portée à mx_internal et contient tous les itemrenderers de toutes les cellules dans la grille de données. Afin que je puisse vérifier le type et la valeur de données à l'intérieur du moteur de rendu et d'activer ou de désactiver toutes les cellules de la même ligne, mais qui se sent trop comme un hack.
Des suggestions?
Modifier: je me rends compte que le fait de désactiver une ligne pourrait signifier des choses différentes. Dans mon cas, cela signifie ne pas être en mesure de modifier la ligne, même lorsque la propriété editable de la grille de données est définie sur true. Il pourrait cependant aussi dire ne pas être en mesure de sélectionner une ligne, mais ce n'est pas ce que je cherche.
J'mon cas, cela signifie ne pas être en mesure de le modifier. Il pourrait cependant aussi dire ne pas être en mesure de sélectionner une ligne. Bonne remarque, je vais mettre à jour la question.
Aussi, les datagrids ne sont pas définis par leurs lignes, ils sont définis par des colonnes. Pour la désactivation de certaines lignes, vous parlez de connaître les données sous-jacentes, ce qui signifie que la manipulation dans le itemRenderers.
OriginalL'auteur Christophe Herreman | 2009-02-16
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, vous aurez besoin de certaines données pour cette ligne pour indiquer qu'elle est non modifiable. Puis, quand le "itemEditBeginning", puis vérifier les données ou d'index de ligne pour activer/désactiver le comportement par défaut avec de l'événement.preventDefault ...
L'autre option est de faire un custom ItemRenderer pour vos données cellulaire, mais ne pense pas que c'est ce que vous voulez que vous auriez besoin de le faire pour chacune de vos cellules.
OriginalL'auteur AndrewB
effectivement, c'est mieux de le faire par l'intermédiaire de "itemEditBeginning".
Regardez ici pour un bon tutoriel: texte du lien
OriginalL'auteur
Alex Harui fournit un bon exemple avec le code source ici, http://blogs.adobe.com/aharui/2007/06/disabling_list_selection.html C'est un peu une longue solution, mais couvre la souris et du clavier de l'interaction avec le composant datagrid. Je suis d'accord avec vous, il est étonnant qu'il n'y a pas un "built-in" de la méthode pour ce faire.
OriginalL'auteur
Il suffit d'assigner une fonction à la "itemEditBegin"de la grille de données qui fait quelque chose comme ceci:
événement.preventDefault() arrêt de la grille de données de commutation de la ItemRenderer à la ItemEditor pour ainsi l'arrêt de l'édition de la ligne qui ne remplit pas les critères.
Votre grille de données doit être modifiable pour que cela fonctionne.
Cela devrait faire l'affaire.
OriginalL'auteur Chepech