Entwickler-Ecke

WinForms - DataGridView sortieren


rittergig - So 10.07.11 15:41
Titel: DataGridView sortieren
Ich möchte Daten aus einem Entity Framework Objektkontext an ein GridView binden und dieses zusem noch nach einer beliebigen Spalte sortieren.
Folgendes habe ich versucht:

Weder das:

C#-Quelltext
1:
2:
3:
4:
5:
var erg = from i in this._context.Instruments select i;
BindingSource bs = new BindingSource();
bs.DataSource = erg;
dataGridView2.DataSource = bs;
dataGridView2.Sort(this.dataGridView2.Columns["Name"], ListSortDirection.Ascending);

noch das:

C#-Quelltext
1:
2:
3:
4:
5:
6:
var erg = from i in this._context.Instruments select i;
BindingSource bs = new BindingSource();
IQueryable iq = erg.AsQueryable();
bs.DataSource = iq;
dataGridView2.DataSource = bs;
dataGridView2.Sort(this.dataGridView2.Columns["Name"], ListSortDirection.Ascending);

geht nicht.

Ich bekomme immer die InvalidOperationException:
Zitat:
Das DataGridView-Steuerelement kann nicht sortiert werden, wenn es an eine IBindingList gebunden ist, die das Sortieren nicht unterstützt.

Warum? Was mache ich falsch?

Grüße Peter


Th69 - So 10.07.11 20:40

Hallo Peter,

die Fehlermeldung sagt aus, daß man die Sort-Methode nicht verwenden kann, wenn man "DataBinding" benutzt.
Du kannst entweder die Sort-Eigenschaft der BindingList benutzen:

C#-Quelltext
1:
bs.Sort = "Name asc";                    

oder aber die Daten schon sortiert in der Query abrufen:

C#-Quelltext
1:
var erg = from i in this._context.Instruments orderby Name /*ascending*/ select i;                    

(wobei "ascending" voreingestellt ist, d.h. nicht angegeben werden muß)