Ich habe eine Reihe von Tabellen in meiner DB, die Verweise auf ein Schlüsselwertpaar halten:gridview binden Dropdownlist zur Liste <KeyValuePair <int, string>>
Typen von Telefonnummern:
- 1 - Startseite
- 2 - Arbeiten
- 3 - Mobil
- 4 - Fax
usw.
Also habe ich eine Tabelle für die Typen und wenn sie in anderen Tabellen verwendet werden, verweisen sie den int-Wert als Fremdschlüssel. Wenn ich sie herausgezogen habe, habe ich sie als keyvaluepair<int, string>
Artikel in der Klasse gespeichert, die sie verwendet.
Wenn ich eine Liste von ihnen bekommen wollte, dachte ich, ich würde nur eine Liste <> von ihnen erstellen, anstatt zwei verschiedene Arten von Datentypen zu verwenden, um die gleichen Daten zu erhalten.
Mein Problem ist angekommen, wenn ich eine Dropdown-Liste innerhalb einer Gridview ausfüllen muss, wenn ich das EditTemplate-Bit verwende. Wenn ich eine Datenquelle verwende, um dies herauszuziehen, schreibt sie [1 Home] in den Text, anstatt den int als Wert und Home als den anzuzeigenden Text zu setzen.
Ich denke, ich habe wirklich eine Multiple-Frage.
One:
Bin ich dumm? Ist das ein wirklich schlechter Weg, um die Daten herauszuholen und zu speichern (der Keyvaluepair-Teil)? Soll ich das alles nur in einer Datentabelle speichern? Ich habe es nicht gern in Datatable geschrieben. Ich habe meine DAL zu meinem BLL genommen und habe versucht, alles als Objekte oder Objekte von List<>
einzukapseln, anstatt Tabellen von allem. Meistens hat das gut funktioniert.
Zwei:
Wenn ich einen Gegenstand wurde mit eher als eine Datentabelle in meine Object für die Dropdownlist zu binden, wie kann ich den aktuell ausgewählten Wert gesetzt wird, anstatt es das erste Element nur in der Liste hat ausgewählt?
EDIT
Wie wurde darauf hingewiesen, unter ich ein Idiot war und mehr nur die Datavaluefield und DataKeyField einstellen benötigt.
die Dropdownlist Um musste ich einfach tun zu binden:
SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'
Der Grund, warum ich nicht war, dass man sofort gesehen habe, weil es nicht in meiner Intellisense zeigt wurde, aber wenn ich es manuell eingegeben in, es hat funktioniert.
Dayam - ich dachte, ich hätte ein * leicht * 30 Punkte oder so, aber du hast mich zu ihm. Gute Arbeit und gute Antwort! –
Danke ... das hat es hervorragend gemacht .. es hat auch mit einer Liste von ihnen funktioniert. Aber ich denke in mancher Hinsicht, was ein Wörterbuch überhaupt ist ... – Jon
Ich habe vergessen, DataValueField und DataTextField zu setzen. Die Ursache meines Wertes und der Anzeige ist der Text der Dropdown-Liste. VIELEN DANK! –