2016-03-22 6 views
-1

ich Gruppierungen in meiner Dropdownlist wie folgt zu schaffen versuchen:erstellen Unterkategorien in MVC Dropdownlist

New Media
--category 1
--category 2
Techniker
--category 3
--category 4

ich dieses alte MVC -DropDownList - Categories - SubCategories gefunden haben, aber das ist befo Dies wurde in MVC aufgenommen. Dann bin ich auf dieses HTML “optgroup” support in DropDownList gestoßen. Also mit diesen beiden Links geändert ich den Code wie folgt aussehen:

ViewBag.CategoryId = new SelectList(db.Categories.Where(c => c.Status == 1).OrderBy(c => c.CategoryName), "CategoryId", "CategoryName", "RoleId", 3); 

Das Problem ist, dass es die Guid aus dieser Tabelle zeigt, nicht das RoleDescription Feld, das ich brauche. Ich habe versucht, die "RoleId" zu "Role" zu machen, weil das meine virtuelle Klasse im Modell ist (referenziert die Role-Klasse). Wie ändere ich das, damit es die korrekte Rolle Name zieht?

+0

Können Sie ein Bild abgeben zu bekommen verweisen müssen, um von die Ausgabe, die Sie erhalten? –

+0

Sie müssen die Modelle zeigen - '" RoleId "' müsste etwas wie '" Role.RoleDescription "' –

+0

@StephenMuecke sein, das funktioniert. Vielen Dank. – djblois

Antwort

1

Die dataGroupField wird sowohl als Feld zum Gruppieren verwendet, als auch zur Anzeige. Da Sie die RoleId übergeben haben, wird sie nach diesem Feld gruppiert und die RoleId für jede Gruppe angezeigt.

Sie müssen es ändern, damit Sie das RoleDescription-Feld als dritten Parameter übergeben.

ViewBag.CategoryId = new SelectList(db.Categories.Where(c => c.Status == 1) 
    .OrderBy(c => c.CategoryName), "CategoryId", "CategoryName", "Role.RoleDescription ", 3); 

Auf der Grundlage der Abfrage, die Sie zur Zeit tun werden, habe ich das Gefühl es eine Navigationseigenschaft von db.Categories oder treten ein, um die RoleDescription