2016-05-21 7 views
0

ich Visual Studio 2013 bin mit und binde asp.net Kontrolle von Enum Wert DropdownBind Dropdownlist-Wert von ENUM-Wert mit benutzerdefinierter Sequenz

ich dieses Enum habe.

enum Name 
    { 
     Kumar = 1, 
     Raju = 2, 
     Anil = 3, 
     Suresh = 4, 
     Bhaskar = 5,    
    }; 

Jetzt habe ich in Enum einen weiteren Wert hinzufügen Chandra = 6, aber ich will, dass Bhaskar = 5 in der letzten Position sein sollte, wenn ich Drop downlist binden und kann nicht die Enum-Sequenz aktualisieren.

Ich möchte diese Art Ergebnis in Dropdown-Liste.

Kumar 
Raju 
Anil 
Suresh 
Chandra 
Bhaskar 

Dies ist, wie ich zur Zeit das Drop-down bevölkern:

Array itemValues = System.Enum.GetValues(typeof(Name)); 
Array itemNames = System.Enum.GetNames(typeof(Name)); 
for (int i = 0; i <= itemNames.Length - 1 ; i++) 
{ 
    ListItem item = new ListItem(itemNames[i], itemValues[i]); 
    dropdownlist.Items.Add(item); 
} 
+0

Wie binden Sie den ENUM-Wert zur Zeit? – har07

+0

'Array itemValues ​​= System.Enum.GetValues ​​(typeof (Name)); Array itemNames = System.Enum.GetNames (typeof (Name)); für (int i = 0; i <= itemNames.Length - 1; i ++) { ListItem item = neues ListItem (itemNames [i], itemValues ​​[i]); dropdownlist.Items.Add (Element); } ' –

+0

In der Zukunft, bitte Code-Snippet nicht im Kommentar wieder posten (bearbeiten Sie stattdessen Ihre Frage). Es ist praktisch nicht lesbar. Bitte machen Sie es anderen einfach, Ihnen zu helfen (ich musste Ihren Code manuell formatieren, um ihn verstehen zu können. Und ich werde das nicht oft machen!). Danke – har07

Antwort

2

Sie können eine benutzerdefinierte Reihenfolge tun LINQ mit OrderBy() wie folgt:

var itemNames = System.Enum.GetNames(typeof(Name)).OrderBy(o => o == "Bhaskar" ? 1 : 0); 

Auf diese Weise 'Bhaskar' das letzte Element sein sollte in der itemNames und andere Enum-Werte, so wie sie in der Enum-Definition angeordnet sind.

Demo: (siehe es in dotnetfiddle lebt)

enum Name 
{ 
    Kumar = 1, 
    Raju = 2, 
    Anil = 3, 
    Suresh = 4, 
    Bhaskar = 5, 
    Chandra = 6 
}; 

public static void Main() 
{ 
    var itemNames = System.Enum.GetNames(typeof(Name)) 
           .OrderBy(o => (string)o == "Bhaskar" ? 1 : 0) 
           .ToArray(); 
    for (int i = 0; i <= itemNames.Length - 1 ; i++) 
    { 
     Console.WriteLine((string)itemNames[i]); 
    } 
} 

Ausgang:

Kumar 
Raju 
Anil 
Suresh 
Chandra 
Bhaskar 
+0

Großartig !! Vielen Dank, Dieser Code funktioniert einwandfrei für mich. –