ASP.NET – Stolperfalle Gridview sortieren

16 08 2007

So ein Gridview ist schon ein tolles Control.

Einfach die passende Datenquelle aktiviert, dann Paging und Sortierung aktivieren und alles ist funktioniert prächtig und sieht professionell aus.

Allerdings bin ich auf ein Problem gestoßen. Ich habe Spalten in meinem Gridview die ich per Templatefield erzeugt, um z.B. eine Grafik anzuzeigen. Da die Grafiken Werte darstellen, möchte ich auch eine Sortierung ermöglichen. Ich habe z.B. die Werte 1-3, die werden mit Kreisen in den Farben Rot, Gelb, Grün dargestellt. Aufsteigen sortiert würde bedeuten erst Grün dann Gelb und als letztes Rot, absteigend wäre dann umgekehrt.

Bei einem Templatefield muss man gesondert angeben nach welchem Wert sortiert werden soll. Dies habe ich mittels folgender Codezeile getan.

<asp:TemplateField SortExpression="uebID">

Leider konnte ich dann immer noch nicht sortieren. Wo lag das Problem? Nach verzweifelter Suche hab ich heraus gefunden, das ASP.NET nur solche TemplateFields sortiert, die kein HeaderTemplate besitzen. Brauch ich auch nicht, ich will ja nur den Inhalt der Spalten anpassen und nicht den Inhalt der Kopfzeile. Also überall HeaderTemplate entfernt. Damit die Spalte aber trotzdem eine Überschrift besitzt habe ich die Befehlszeile von oben wie folgt angepasst:

<asp:TemplateField SortExpression="uebID" HeaderText="Priorität">

Siehe da, das Sortieren funktioniert ohne Probleme!