Ich würde die Daten wahrscheinlich nicht binden , da es sich um eine Aufzählung handelt, und sie wird sich nach der Kompilierungszeit nicht ändern (es sei denn, ich habe einen dieser dummen Momente).
Besser nur durch die Aufzählung iterieren:
Dim itemValues As Array = System.Enum.GetValues(GetType(Response))
Dim itemNames As Array = System.Enum.GetNames(GetType(Response))
For i As Integer = 0 To itemNames.Length - 1
Dim item As New ListItem(itemNames(i), itemValues(i))
dropdownlist.Items.Add(item)
Next
Oder dasselbe in C #
Array itemValues = System.Enum.GetValues(typeof(Response));
Array itemNames = System.Enum.GetNames(typeof(Response));
for (int i = 0; i <= itemNames.Length - 1 ; i++) {
ListItem item = new ListItem(itemNames[i], itemValues[i]);
dropdownlist.Items.Add(item);
}
Verwenden Sie die folgende Dienstprogrammklasse
Enumeration
, um einIDictionary<int,string>
(Enum-Wert- und Namenspaar) aus einer Aufzählung abzurufen . Anschließend binden Sie das IDictionary an ein bindbares Steuerelement .Beispiel: Verwenden der Utility-Klasse zum Binden von Aufzählungsdaten an ein Steuerelement
quelle
Ich benutze dies für ASP.NET MVC :
quelle
Meine Version ist nur eine komprimierte Form der oben genannten:
quelle
Jeder Enum-Typ leitet sich von System.Enum ab. Es gibt zwei statische Methoden, mit denen Daten an ein Dropdown-Listensteuerelement gebunden werden können (und der Wert abgerufen werden kann). Dies sind Enum.GetNames und Enum.Parse. Mit GetNames können Sie wie folgt an Ihr Dropdown-Listensteuerelement binden:
Nun, wenn Sie den Enum-Wert wieder bei Auswahl haben möchten ...
quelle
Nachdem ich alle Beiträge gelesen hatte, entwickelte ich eine umfassende Lösung, um das Anzeigen der Enum-Beschreibung in der Dropdown-Liste sowie das Auswählen des richtigen Werts aus dem Modell in der Dropdown-Liste bei der Anzeige im Bearbeitungsmodus zu unterstützen:
Aufzählung:
Enum-Erweiterungsklasse:
Modellklasse:
und Ansicht:
Wenn Sie dieses Dropdown-Menü ohne Bindung an Model verwenden, können Sie stattdessen Folgendes verwenden:
Auf diese Weise können Sie erwarten, dass in Ihrem Dropdown-Menü Beschreibung anstelle von Aufzählungswerten angezeigt wird. Auch beim Bearbeiten wird Ihr Modell nach der Buchungsseite durch einen Dropdown-Wert aktualisiert.
quelle
Wie andere bereits gesagt haben - binden Sie keine Daten an eine Aufzählung, es sei denn, Sie müssen je nach Situation an unterschiedliche Aufzählungen binden. Es gibt verschiedene Möglichkeiten, dies zu tun, einige Beispiele unten.
ObjectDataSource
Eine deklarative Methode mit ObjectDataSource. Erstellen Sie zunächst eine BusinessObject-Klasse, die die Liste zurückgibt, um die DropDownList an Folgendes zu binden:
Fügen Sie dann der ASPX-Seite ein HTML-Markup hinzu, um auf diese BO-Klasse zu verweisen:
Diese Option erfordert keinen Code dahinter.
Code hinter DataBind
So minimieren Sie den HTML-Code auf der ASPX-Seite und binden Code Behind ein:
Wie auch immer, der Trick besteht darin, die Enum-Methoden von GetValues, GetNames usw. für Sie arbeiten zu lassen.
quelle
Ich bin nicht sicher, wie ich es in ASP.NET machen soll, aber schau dir diesen Beitrag an ... könnte es helfen?
quelle
Sie könnten linq verwenden:
quelle
quelle
quelle
Generischer Code mit Antwort sechs.
quelle
Nachdem ich diese Antwort gefunden hatte, fand ich eine meiner Meinung nach bessere (zumindest elegantere) Möglichkeit, dies zu tun. Ich dachte, ich würde zurückkommen und sie hier teilen.
Page Load:
LoadValues:
SaveValues:
quelle
Dies ist wahrscheinlich eine alte Frage. Aber so habe ich meine gemacht.
Modell:
Dann in der Ansicht: So füllen Sie das Dropdown-Menü aus.
Dies sollte alles in Ihrer Aufzählungsliste füllen. Hoffe das hilft..
quelle
[Display(Name = "Option number one")] Option1,
Das ist nicht ganz das, wonach Sie suchen, könnte aber helfen:
http://blog.jeffhandley.com/archive/2008/01/27/enum-list-dropdown-control.aspx
quelle
Warum nicht so verwenden, um jede listControle zu übergeben:
Und die Verwendung ist genauso einfach wie:quelle
ASP.NET wurde inzwischen mit einigen weiteren Funktionen aktualisiert, und Sie können jetzt die integrierte Aufzählung zum Dropdown verwenden.
Wenn Sie die Enum selbst binden möchten, verwenden Sie Folgendes:
Wenn Sie an eine Antwortinstanz gebunden sind, verwenden Sie Folgendes:
quelle
Dies ist meine Lösung für das Bestellen einer Aufzählung und einer Datenbindung (Text und Wert) zum Dropdown mit LINQ
quelle
Lesen Sie meinen Beitrag zum Erstellen eines benutzerdefinierten Hilfsprogramms "ASP.NET MVC - Erstellen eines DropDownList-Hilfsprogramms für Aufzählungen": http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc -creating-a-dropdownlist-helper-for-enums.aspx
quelle
Wenn Sie eine benutzerfreundlichere Beschreibung in Ihrem Kombinationsfeld (oder einem anderen Steuerelement) haben möchten, können Sie das Attribut Beschreibung mit der folgenden Funktion verwenden:
Hier ist ein Beispiel für eine Aufzählung mit angewendeten Beschreibungsattributen:
Dann binden, um so zu kontrollieren ...
Auf diese Weise können Sie beliebigen Text in die Dropdown-Liste einfügen, ohne dass er wie ein Variablenname aussehen muss
quelle
Sie können auch Erweiterungsmethoden verwenden. Für diejenigen , die nicht vertraut mit den Erweiterungen schlage ich vor, die Überprüfung VB und C # Dokumentation.
VB-Erweiterung:
So verwenden Sie die Erweiterung:
C # -Erweiterung:
So verwenden Sie die Erweiterung:
Wenn Sie das ausgewählte Element gleichzeitig einstellen möchten, ersetzen Sie es
mit
Durch die Konvertierung in System.Enum werden Probleme mit der Größe und der Ausgabe vermieden. Zum Beispiel wäre 0xFFFF0000 4294901760 als Uint, aber -65536 als Int.
TryCast und as System.Enum sind etwas schneller als Convert.ChangeType (enumTypeValues [i], enumUnderType) .ToString () (12:13 in meinen Geschwindigkeitstests).
quelle
Tutorial zu asp.net und winforms mit Combobox und Dropdown-Liste: Verwendung von Enum mit Combobox in C # WinForms und Asp.Net
Hoffnung hilft
quelle
Die akzeptierte Lösung funktioniert nicht, aber der folgende Code hilft anderen bei der Suche nach der kürzesten Lösung.
quelle
Sie können dies viel kürzer tun
quelle