2009-11-12 4 views
0

Comment faire en sorte qu'un contrôle List s'intègre à une deuxième colonne (ou à plusieurs colonnes)? Merci, laissez-moi savoir s'il y a une solution pour cela avec le contrôle List ou un autre contrôle Flex. Par exemple, si vous avez une liste avec 42 éléments, mais je veux limiter la hauteur d'une liste à 20 éléments; alors, au lieu d'avoir une liste de 42 items tout en bas, je dirais que cette liste ressemble à l'équivalent de 3 listes adjacentes: la première avec 20 items, la seconde avec 20 items, et la troisième avec 2 items (qui représente la liste originale de 42 items).Dans Flex, comment intégrer des listes dans des colonnes?

Cette question semble similaire, mais il est dans ColdFusion:
Wrapping lists into columns

+0

Voulez-vous dire une deuxième rangée? –

+0

Vous cherchez wordwrap? – Amarghosh

+0

Il est similaire à "wordwrap", mais n'est pas associé à Wordwrap strictement aux étiquettes de texte, de sorte qu'il couvre deux lignes au lieu d'une seule (et peut-être pour éviter de tronquer le texte). –

Répondre

1

L'utilisation d'un TileList et la modification de la variable de direction constituent la meilleure solution que j'ai trouvée.

0

Vous pouvez utiliser un répéteur et un simple label itemRenderer pour les éléments de liste et évitez d'utiliser une liste complète. Si vous intégrez le tout dans un contrôle personnalisé, vous pouvez fournir la même API que Liste afin que vos consommateurs ne fassent jamais la différence.

-1

La valeur par défaut itemRenderer pour un contrôle List est TextInput qui ne supporte que le texte d'une seule ligne. Utilisez TextArea à la place.

<mx:List itemRenderer="mx.controls.TextArea"/> 
-1

Essayez de régler les deux propriétés suivantes sur la liste:

wordWrap=true 
variableRowHeight=true 
0

Je pense que vous êtes à la recherche d'une deuxième rangée, comme d'autres l'ont noté. Définir wordWrap sur true ou utiliser un rendu d'élément différent est le meilleur moyen de le faire, mais l'utilisation d'un rendu d'élément personnalisé vous donnera plus de contrôle sur la façon dont l'objet est affiché.

+0

Je souhaite que quiconque a voté cette réponse nous dirait pourquoi. Je pense que cette solution fonctionne. –

0

Je suggère de créer un composant personnalisé qui enveloppe un nombre variable de listes. Ce composant personnalisé peut avoir une propriété nommée "maxListHeight". Il peut également avoir une propriété "dataProvider". Ce composant personnalisé produira un ensemble de listes alignées horizontalement. Le nombre de listes produites par le composant personnalisé sera: floor (dataProvider.length/maxListHeight) +1. Où tout sauf la dernière liste produite aura un listHeight de maxListHeight; la dernière liste produite aura un listHeight de: dataProvider.length% maxListHeight.

Cela devrait fonctionner, mais la gestion de l'ajout et de la suppression d'éléments dans la liste principale devrait nécessiter un travail supplémentaire (si elle n'est pas ajoutée/retirée à l'arrière). Cela nécessiterait également d'instancier plusieurs listes au lieu d'une seule.

+0

Cette idée devrait fonctionner, mais je n'aime pas que cela dépende de l'instanciation de plusieurs listes adjacentes. –

+0

Je n'aime pas non plus cette solution, car vous devez également ajouter une logique pour désélectionner tous les autres list.selectedItem, lorsque vous sélectionnez un élément dans une liste produite. –

Questions connexes