The Sound of Sorting.

31 08 2011

Normalerweise poste ich meine Netzfundstücke ja drüben bei Posterous – doch ab und zu mach ich mal eine Ausnahme und ein Schnipsel aus dem Netz schafft es in meinen Blog.

Diesmal ein Video welches man am Besten mit „The Sound of Sorting“ umschreiben könne. Die visuelle Darstellung von Sortieralgorithmen ist vielen bekannt, das Ganze auch noch mit Tönen zu versehen finde ich genial.

Doch seht selbst:





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!





ASP.NET – Headergrafik bei sortiertem Gridview

15 08 2007

Wenn ich mir meine Pagehits so anschaue, scheinen sich viele für den Gridview & Checkbox-Artikel zu interessieren.

Deshalb nun ein weiterer Artikel zu diesem Thema. Gridviews lassen sich super einfach sortieren, nur leider wird nie angezeigt nach welcher Spalte gerade sortiert wird bzw. ob aufsteigend oder absteigen.

Abhilfe kann man sich recht einfach schaffen:

public void gridJobs_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if ((e.Row != null) && e.Row.RowType == DataControlRowType.Header)
        {
            foreach (TableCell cell in e.Row.Cells)
            {
                if (cell.Controls.Count > 0)
                {
                    LinkButton button = cell.Controls[0] as LinkButton;
                    if (button != null)
                    {
                        Image image = new Image();
                        image.ImageUrl = "image/empty.gif";
                        if (gridJobs.SortExpression == button.CommandArgument)
                        {
                            if (gridJobs.SortDirection == SortDirection.Ascending)
                                image.ImageUrl = "image/sort_up.gif";
                            else
                                image.ImageUrl = "image/sort_down.gif";
                        }
                        cell.Controls.Add(image);
                    }
                }
            }
        }
    }

GridJobs heißt mein Gridview, das müsst ihr auf euren Code anpassen. Es gibt drei Grafiken, eine ist einfach nur durchsichtig (empty.gif), ein Pfeil nach oben (sort_up.gif) für aufsteigende Sortierung und einen Pfeil nach unten (sort_down.gif), für die absteigende Sortierung.Damit die oben genannte Prozedur auch ausgeführt wird müsst ihr noch folgendes in der ASP.NET-Seite zu eurem Gridview hinzufügen.

OnRowCreated="gridJobs_RowCreated"

Viel Spaß & Erfolg!