Laden...

Von Linq direkt nach Listitem

Erstellt von sra vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.164 Views
S
sra Themenstarter:in
230 Beiträge seit 2004
vor 14 Jahren
Von Linq direkt nach Listitem

Hallo

Ich versuche gerade den totalen Dropdownlist-füll-overkill, indem ich folgendes versuche:

Me.ddlGruppe.DataSource = From g In db.Kontengruppens Select New ListItem(g.kog_Name, g.kog_Count)

Auf den ersten Blick hat das super funktioniert und ich bin begeistert. Allerdings habe ich dann gemekrt, dass der Value und der Text des Listitems immer derselbe ist. Sprich, in diesem Falle ist der Value der Name und nicht der Count.

Kann mir das jemand erklären?

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso

S
sra Themenstarter:in
230 Beiträge seit 2004
vor 14 Jahren

Da hier scheinbar (anscheinend?) keiner eine Ahnung hat lade ich euch alle zum wilden Spekulieren ein 😃

Ist das ein Bug oder raff ich ein zugrundeliegendes Prinzip nicht?

Nachtrag: ich hab das jetzt halt anderst gelöst, was ja kein Problem ist. Aber es wäre halt schon khul so wie ich das wollte.

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo sra,

Nachtrag: ich hab das jetzt halt anderst gelöst, was ja kein Problem ist. Aber es wäre halt schon khul so wie ich das wollte. Und wie hast du es nun gelöst?

Btw.: Bei mir geht das, so wie du es dir gedacht hast. Benutzt du Linq2SQL? Geht es, wenn du (Me.ddlGruppe.DataSource = From g In db.Kontengruppens Select New ListItem(g.kog_Name, g.kog_Count)).ToList() ausprobierst?

Gruß,
dN!3L

S
sra Themenstarter:in
230 Beiträge seit 2004
vor 14 Jahren

Ich loope halt über die Collection und adde die Einträge manuell. Bist du sicher, dass es bei dir geht? Bei mir geht es schon auch, aber der Value ist halt immer gleich wie der Text - auch wenn ich beim Value die ID des Datensatzes angebe und beim Text den Namen.

Wenn das bei dir wirklich geht, dann weiss ich echt nicht weiter. So viel kann man ja gar nicht falsch machen.

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo sra,

Bist du sicher, dass es bei dir geht?

Jein. Ich habe die LINQ-Abfrage ebenso erstellt und der Inspector sagt mir, dass Value und Text so (unterschiedlich), wie gewünscht, sind.
Der "Test" ist aber nicht vollständig, da ich nicht mit DataSource und nem WebControl probiert habe.

Benutzt du LINQ2SQL? Hast du mal das .ToList() ausprobiert? Das wirkt da manchmal Wunder, da du den LINQ2SQL-Provider damit explizit zwingst, die Query (an dieser Stelle) auszuführen.

Gruß,
dN!3L

S
sra Themenstarter:in
230 Beiträge seit 2004
vor 14 Jahren

Hallo dN!3L

Ich habe jetzt ein Testprojekt erstellt, mit nichts als einer Dropdownlist und einer Tabelle in einem dbml File und folgendem Code im Page_Load:

this.ddlKontogruppe.DataSource = (from k in db.Kontengruppens select new ListItem() { Text = k.kog_Name, Value = k.kog_Count.ToString() }).ToList();

Leider funktioniert selbst das nicht. ToList hat auch in meinem ersten Query keinen Unterschied gemacht.

Bug?

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso

691 Beiträge seit 2007
vor 14 Jahren

Bei mir geht es schon auch, aber der Value ist halt immer gleich wie der Text - auch wenn ich beim Value die ID des Datensatzes angebe und beim Text den Namen.

Du meinst schon diese Properties

DataTextField="Text" 
DataValueField="Value"

? (Hmm mir fällt grad auf, das das gar nicht das Web-Forum ist. Was für eine DDL verwendest du denn? WF, WPF, ASP?

Poste noch ein wenig mehr Code bitte. Das komplette Markup und die Stelle wo das DataBinding stattfindet. Das hilft uns eventuell weiter dir zu helfen.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

S
sra Themenstarter:in
230 Beiträge seit 2004
vor 14 Jahren

Hier noch meine Lösung. Warum es aber anders rum nicht geht, versteh ich noch immer nicht.

Me.ddlKanton.Items.AddRange((From k In db.Kantones Order By k.kan_Name Select New ListItem(k.kan_Name, k.kan_ID)).ToArray())

Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso