Autor Beitrag
rittergig
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: So 10.07.11 15:41 
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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
bs.Sort = "Name asc";					

oder aber die Daten schon sortiert in der Query abrufen:
ausblenden 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ß)