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!

Werbeanzeigen