2012-01-22 8 views
5

Jestem nowy w Asp.net i obecnie pracuję z GridViews. Rozejrzałem się po tej witrynie, a inni widzieli wskazówki, jak dodawać strzałki sortowania do nagłówków kolumn.Dodawanie domyślnych strzałek sortowania do GridView

tej pory robiłem to:

ustawić te właściwości GridView:

SortedAscendingHeaderStyle-CssClass="sortasc" 
SortedDescendingHeaderStyle-CssClass="sortdesc" 

A mój CSS to:

th.sortasc a 
{ 
    display:block; padding:0 4px 0 15px; 
    background:url("images/icons/ascArrow.png") no-repeat; 
} 

th.sortdesc a 
{ 
    display:block; padding:0 4px 0 15px; 
    background:url("images/icons/descArrow.png") no-repeat; 
} 

Działa to doskonale pokazać zdjęcia po jego użytkownik klika nagłówek i sortuje kolumny.

Problem, który mam teraz, polega na tym, że chciałbym, aby kolumny wyświetlały obrazy domyślnie, aby użytkownicy mogli wiedzieć, że mogą je kliknąć, aby je posortować. Czy istnieje sposób, aby to osiągnąć?

Odpowiedz

10

można pokazać strzałkę do sortowania zachowanie kolumny gridview w czymś RowCreated wydarzenie jak to zazwyczaj robię to w ten sposób

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     foreach (TableCell tc in e.Row.Cells) 
     { 
      if (tc.HasControls()) 
      { 
       // search for the header link 
       LinkButton lnk = (LinkButton)tc.Controls[0]; 
       if (lnk != null && GridView1.SortExpression == lnk.CommandArgument) 
       { 
        // inizialize a new image 
        System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); 
        // setting the dynamically URL of the image 
        img.ImageUrl = "~/img/ico_" + (GridView1.SortDirection == SortDirection.Ascending ? "asc" : "desc") + ".gif"; 
        // adding a space and the image to the header link 
        tc.Controls.Add(new LiteralControl(" ")); 
        tc.Controls.Add(img); 

       } 
      } 
     } 
    } 
} 

również przełącza obraz na rosnącym i malejącym rozkazy rodzaj kolumny

Jaki kod faktycznie jest to pętle poprzez GridView nagłówka do szukamy LinkButton(ramowa tworzy go tylko wtedy, gdy nieruchomość SortExpression jest ustawiony). Następnie, jeżeli stwierdzono LinkButton jest pole sortowane, a następnie pokazuje obraz na wyjściu, to wszystko

AnswerSource

+0

można rzeczywiście przenieść inicjalizacji img do if, i połączyć if. 'if (lnk! = null && GridView1.SortExpression == lnk.CommandArgument) {...' – Patrick

+1

@ Patrick zobacz edycję i dziękuję za sugestię poprawy – Devjosh

+0

Wielkie dzięki za pomoc! Spróbuję tego. Mam jednak kilka pytań: czy są części tego, które będę musiał zmienić na VB zamiast C#? Ponadto, nie pracowałem jeszcze z wydarzeniami dla kontroli, jestem całkiem nowy w tym. Wszelkie wskazówki, gdzie można edytować wydarzenie gridview w gridview? – Cineno