0
<asp:ImageButton ID="lnkEmpIdUp" runat="server" ImageUrl="~/Images/upArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" /> 
&nbsp; 
<asp:ImageButton ID="lnkEmpIdDown" runat="server" ImageUrl="~/Images/downArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" /> 

如上面的代碼所說,有2個圖像按鈕(保留在Gridview頭文件模板中)點擊後,會執行排序。仔細看會導致兩個控件具有相同的命令名稱和相同的onClick事件。更改gridview中的排序圖像按鈕

OnClick事件處理通過命令名排序的列,排序方向通過隱藏字段處理。看下面的代碼

protected void lnkSorting_Click(object sender, EventArgs e) 
      { 
       // Initialize variables 
       //Get Dataset values here for the grid. 
       var imgSort = sender as ImageButton; 
       string colName = imgSort.CommandName; 

       if (imgSort.ImageUrl.Trim().ToUpper().Contains(("up").ToUpper())) // If Up(Ascending)arrow is clicked. 
       { 
        if (hdnSortDir.Value.Equals(string.Empty) || hdnSortDir.Value.ToString().Equals("desc")) 
        { 
         hdnSortDir.Value = "asc"; 
         //imgSort.ImageUrl = "~/Images/ascending.gif"; 
        } 
       } 
       else if (imgSort.ImageUrl.Trim().ToUpper().Contains(("down").ToUpper())) 
       { 
        hdnSortDir.Value = "desc"; 
       } 

.....Sorting Logic... 

} 

我的疑問:如何在運行時更改圖像時,在gridview中執行排序?在對「員工姓名」列進行升序排序後,應該將該列的升序圖像更改爲某個其他圖像,以便用戶可以確定哪一列是排序的以及朝哪個方向。

請幫忙!!!

謝謝!

回答

0

通過在隱藏字段中設置排序表達式和排序方向值,可以在rowdatabound中完成相同的操作。

0

通常對於排序,當您設置AllowSorting="true"時,您可以單擊列標題進行排序。重複點擊會切換排序方向。對於排序指示,在ASP.NET 4之前,必須編寫自定義代碼以在列標題中插入圖像來指示排序的方向。但是,使用ASP.NET 4,您可以使用SortedAscendingHeaderStyle & SortedDescendingHeaderStyle屬性將某些樣式或css類關聯到標題(您也具有用於樣式化已排序單元格的屬性 - 請參閱SortedAscendingCellStyle & SortedDescendingCellStyle) - 因此,通常可以使用CSS來設置背景圖像來顯示列標題中的排序方向。

看看這些文章瞭解的辦法更好:

編輯:正如上面所說,ASP.NET 2.0〜3.5,您需要編寫自定義代碼將這些排序圖標推入列標題。例如,請參閱this article其中網格視圖在擴展到做相同或參見this其中RowDataBound事件用於將css類應用於列標題(類將設置背景排序圖像)或參見使用RowCreated事件的this事件實際上將圖像控制添加到標題單元格有很多替代但相似的變化可能 - 個人而言,我更喜歡第二種應用CSS類的方法。

+0

感謝您的輸入,但我使用asp.net 3.5 –

+0

@Xor的權力,請參閱我的編輯答案。 – VinayC