Comment faire un ComboBox où l'utilisateur peut sélectionner null
?Null dans Flex ComboBox
Si vous créez simplement un combobox avec null
dans le dataprovider, la valeur apparaît mais l'utilisateur ne peut pas sélectionner:
<mx:ComboBox id="cb" dataProvider="{[null, 'foo', 'bar']}" />
Y at-il un moyen de faire que sélectionner null?
Une solution de contournement consiste à ajouter un élément dans le DataProvider qui n'est pas null mais «représente» null; puis mappez entre null et cet objet chaque fois que vous accédez à la liste déroulante. Mais ce n'est pas vraiment une solution élégante; vous devrez toujours garder cette cartographie à l'esprit dans tout le code qui accède à un combobox 'nullable' ...
Éditer: expansion pourquoi pourquoi je n'aime pas la solution de contournement: Cela pourrait être fait dans une sous-classe bien sûr , mais soit je présente de nouveaux attributs (comme nullableSelectedItem
); mais alors vous devez faire attention à toujours utiliser ces attributs. Ou je remplace les ComboBoxes selectedItem
; mais je crains que cela ne vienne casser la classe de base: il n'aimerait peut-être pas que quelque chose change son idée de l'intérieur de l'élément sélectionné. Et même ce hack fonctionne fragile, sur le dessus de selectedItem
et dataProvider
ce nullItem alors doit également être traité spécial data
et listData
pour équarrisseurs, en labelFunction
, et il est sans doute encore être exposé à des événements ComboBox ... envoie Il pourrait travailler, mais c'est un bidouillage juste pour résoudre le problème que si l'utilisateur clique sur l'élément, il n'est pas activé (pour le reste le ComboBox gère très bien). (Une autre alternative est d'avoir un composant ui délégué à un ComboBox, mais c'est encore beaucoup plus de code juste pour éviter ce petit problème)
Vous pouvez créer une sous-classe de ComboBox qui encapsule uniquement ce comportement d'annulation. – Simon
Un commentaire sur Spark ComboBox? – BrunoJCM