Spaltenreihenfolge bei LINQ to SQL

17/04/2008 - 06:47 von Uwe Gabbert | Report spam
Hallo

ich lese eine DB aus und schreibe das Ergebnis in eine DGV:

Dim betriebe = From b In intranet.t_betriebe _
Where b.firma.Contains(tbxBetrieb.Text) _
Where b.ort.Contains(tbxOrt.Text) _
Select b.kunde, b.firma, b.ort, b.innungsmitglied

dgvSuche.DataSource = betriebe

Leider werden die Felder nicht in der Reihenfolge des Select angegeben,
sondern alphabetisch geordnet. Wie kann ich das àndern?

Vielen Dank. Uwe Gabbert
 

Lesen sie die antworten

#1 Elmar Boye
17/04/2008 - 10:39 | Warnen spam
Hallo Uwe,

Uwe Gabbert schrieb:
ich lese eine DB aus und schreibe das Ergebnis in eine DGV:

Dim betriebe = From b In intranet.t_betriebe _
Where b.firma.Contains(tbxBetrieb.Text) _
Where b.ort.Contains(tbxOrt.Text) _
Select b.kunde, b.firma, b.ort, b.innungsmitglied

dgvSuche.DataSource = betriebe

Leider werden die Felder nicht in der Reihenfolge des Select angegeben,
sondern alphabetisch geordnet. Wie kann ich das àndern?



Das DataGridView, wie auch andere Steuerelemente, beziehen
ihre Informationen über eine PropertyDescriptorCollection,
und die wird im Standard nach Namen geordnet.
Linq (To Sql) alleine kann da überhaupt nichts dran àndern.

Wenn Du kein Spaltenlayout manuell festlegen willst, mußt Du das
Ergebnis in eine Liste umwandeln, die ITypedList unterstützt.
BindingList<T> ist z. B. eine, die von Linq To Sql geliefert wird:
<URL:http://msdn2.microsoft.com/de-de/li...0.aspx>
Dafür müsste oben aber t_betriebe oder eine eigene Klasse
geliefert werden.

Allerdings muß dabei ITypedList.GetItemProperties überschrieben
werden und damit die Eigenschaften in der gewünschten Reihenfolge
übergeben werden. Man kann das z. B. mit Hilfe eines Attributs
automatisieren, was ich mal in einem (C#) Projekt gezeigt hatte:
<URL:http://groups.google.de/group/micro...77a80f>

Für Linq To Sql müßte da noch was passieren, da dort teilweise
(interne) Ableitungen wie SortableBindingList geliefert werden.

Falls Dir das jetzt erstmal alles zuviel ist, lege die
Spaltenanordnung manuell fest.

Gruß Elmar

Ähnliche fragen