Plusieurs colonnes dans la liste boîtier de commande
-
27-09-2019 - |
Question
Comment puis-je afficher deux colonnes dans une zone de liste?
La solution
Une zone de liste n'a pas été conçu pour afficher des données à plusieurs colonnes. Même Windows Forms version ne supporte pas directement ce type d'affichage des données.
Vos besoins ne sont pas claires, mais le moyen le plus simple d'aller serait d'utiliser un contrôle de GridView. Il vous donne beaucoup de fonctionnalités hors de la boîte, et vous pouvez l'étendre à plusieurs colonnes très facilement. Si vous avez besoin d'un plus grand contrôle sur l'apparence ou la fonctionnalité, vous pouvez utiliser un DataList à la place.
Pour obtenir la capacité de défilement, vous pouvez soit utiliser un <div>
défilement ou simplement utiliser le mécanisme de pagination du GridView si c'est approprié.
Autres conseils
Vous pourriez l'aligner comme si les données dans 2 colonnes
new ListItem("blah1".PadRight(10, ' ') + "blah2");
comme indiqué ici: http: / /articles.dotheweb.net/post/Formatting-columns-in-a-ListBox-of-ComboBox.aspx
En outre, vous pouvez rouler votre propre avec un DataList.
On dirait que vous devez écrire votre propre contrôle, ou vous pouvez utiliser le contrôle ListView.
utilisation de liste est une alternative parfaite pour la zone de liste de plusieurs colonnes
Si vous voulez utiliser des colonnes dans une zone de liste, vous devez le faire en fonction de l'alignement.
Par exemple:
String columns = "{0, -55}{1, -35}{2, -35}";
ListBox1.Items.Add(String.Format(columns, "Filename", "Selected DateModified", "Vault DateModified"));
ListBox1.Items.Add(String.Format(columns, fileName, datetime1, datetime2));
Sortie de ma propre mise en œuvre de ce code ci-dessous:
Gardez à l'esprit la police que vous utilisez doit être une police monospaced, sinon le désordre de la volonté d'alignement en raison de l'espacement variable entre les caractères (et ce plus la exagère chaîne est).
Comme Nick Craver a déjà commenté, le ListView est probablement pas le droit de contrôle de l'information à plusieurs colonnes.
Au lieu de piratage de votre liste apparaisse comme si elle a deux colonnes, il pourrait être une meilleure idée d'utiliser un DataGridView . Il sera plus facile à installer, le format et vos données seront conservées d'une manière beaucoup plus souple.
DataGridViews soutiennent également attribution des listes d'objets comme sources de données , si cela rend les choses plus faciles.
Si je comprends bien, vous voulez une colonne de données pour afficher horizontale. Cela peut être acheived en utilisant un DataList
et ont RepeatDirection
réglé sur « Hozizontal » avec les colonnes répétées spécifiées.
Par exemple:
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" CellSpacing="10" >
côté Plusieurs éléments côte à côte sont possibles si vous faites référence à la boîte à outils et ajoutez le wrapPanelOrientation;) il liste ressembler
1stItem 2ndItem
3rdItem 4thItem .. ect..
ListBox.ItemsPanel>
ItemsPanelTemplate>
toolkit:WrapPanelOrientation="Horizontal"FlowDirection="LeftToRight"ItemWidth="220"ItemHeight="60"/>
/ItemsPanelTemplate>
/ListBox.ItemsPanel>
/ListBox>