Art gridview mit dynamic linq
Ich habe ein gridview mit mehreren Spalten, von denen 3 würde ich gerne Sortieren.
Die Quelle für die Daten in der session.
protected void MyGridHistorySort(object sender, GridViewSortEventArgs e)
{
var TheColumn = (e.SortExpression).ToString();
TheDataHistory = (List<ViewDataHistoryModel>)Session["SessionDataHistory"];
var test = "data.DataDate";
var NewDataSource = from data in TheDataHistory
orderby test
select data;
MyGridHistory.DataSource = NewDataSource;
MyGridHistory.DataBind();
DataDate ist eine gültige Spalte in der Liste, aber die orderby-Anweisung nicht funktioniert. Im Idealfall würde ich mag, es zu Sortieren, die variable TheColumn durch das schreiben etwas wie test = "data."+TheColum; und fügen Sie dann eine Sortierreihenfolge basierend auf einem booleschen Wert. Ich schaute auf die OrderBy-Erweiterungsmethode NewDataSource.OrderBy(test); aber das funktioniert auch nicht.
Was bin ich um meinen code zu arbeiten?
Dank.
InformationsquelleAutor frenchie | 2011-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie benötigen
Da die orderby-Klausel nimmt den Namen der Eigenschaft. Die Klausel nicht Parsen der Zeichenfolge zu bestimmen, was zu bestellen wie Dynamische Queryable tut.
Oder, im Fall der Sortierung über mehrere Felder, die ich benutzen würde
Wenn Sie wirklich verbogen, die nur mit einem string Sortieren, dann würde ich Total empfehlen Dynamische Queryable Bibliothek. Ich nutze es und es ist perfekt für das, was ich getan habe in letzter Zeit (mit etwas Unterstützung für DateTime? Objekte)
Dann können Sie Dinge tun, wie
Liebe diese Bibliothek!
Was würde ich wohl tun, in diesem Fall verwenden Sie die gleiche Anweisung, nur ohne die orderby-Klausel, dann haben Sie eine switch-Anweisung, dass die Aufträge, die Ihnen durch was auch immer-Feld übergeben wird, über die Argumente. Ich bin mit der Bearbeitung meiner Antwort zu zeigen...
Ich habe es nur mit der switch-Klausel. Ich weiß, es muss einen besseren Weg, es zu tun, aber für jetzt funktioniert es. Sub-optimalen code, aber das ist ok für jetzt.
InformationsquelleAutor khr055
Könnten Sie Dynamische Linq für diesen Ausdruck:
So haben Sie heruntergeladen Dynamik.cs-Datei, enthalten Sie in Ihrem Projekt und nutzen das System.Linq -.Dynamic namespace? Da das standard-Linq unterstützt keine dynamischen Ausdrücken.
InformationsquelleAutor Marc
Kopieren Sie den code in meine Antwort und ändern Sie den Select, OrderBy und dynamischen T 😉
Wie, um die position einer LINQ-Abfrage SELECT variable
InformationsquelleAutor Guillaume86