2012-01-22 6 views
5

Tôi mới dùng Asp.net và hiện tôi đang làm việc với GridViews. Tôi đã xem xét trang web này và những người khác đã xem mẹo về cách thêm mũi tên sắp xếp vào tiêu đề cột.Thêm mũi tên sắp xếp mặc định vào GridView

Cho đến nay tôi đã làm điều này:

Đặt các đặc tính này GridView:

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

Và css của tôi có này:

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; 
} 

này hoạt động tuyệt vời để hiển thị một hình ảnh sau người dùng nhấp vào tiêu đề và loại cột.

Vấn đề tôi đang gặp phải là tôi muốn các cột hiển thị hình ảnh theo mặc định để người dùng có thể biết rằng họ có thể nhấp vào các cột để sắp xếp. Có cách nào để hoàn thành nó không?

Trả lời

10

bạn có thể hiển thị các mũi tên để phân loại hành vi của một cột gridview trong một cái gì đó RowCreated sự kiện như thế này tôi thường làm theo cách này

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); 

       } 
      } 
     } 
    } 
} 

nó cũng Toggles hình ảnh tăng dần và giảm dần đơn đặt hàng loại cột

gì mã thực sự làm điều đó là vòng qua các GridView header để tìm kiếm một LinkButton(Framework tạo ra nó chỉ nếu tài sản SortExpression được thiết lập). Sau đó, nếu thấy LinkButton là lĩnh vực được sắp xếp, sau đó nó cho thấy hình ảnh đến đầu ra, đó là tất cả

AnswerSource

+0

Bạn thực sự có thể di chuyển khởi của img vào câu lệnh if, và kết hợp các câu lệnh if. 'if (lnk! = null && GridView1.SortExpression == lnk.CommandArgument) {...' – Patrick

+1

@ Patrick xem chỉnh sửa và cảm ơn vì đã đề xuất cải tiến – Devjosh

+0

Cảm ơn bạn rất nhiều vì đã giúp đỡ! Tôi sẽ thử cái này. Tôi có một vài câu hỏi mặc dù: Có những phần của điều này tôi sẽ phải thay đổi cho VB thay vì C#? Ngoài ra, tôi chưa làm việc với các sự kiện để kiểm soát, tôi khá mới mẻ với điều này. Bất kỳ lời khuyên nào về việc đi đâu để chỉnh sửa sự kiện được tạo hàng loạt của chế độ xem lưới? – Cineno