2011-10-25 58 views
2

ASP.NET GridView排序:當我單擊列名稱時,我想要將排序方向從升序更改爲降序。但默認情況下,排序方向始終顯示爲上升。我是否缺少任何屬性設置來切換排序方向?任何幫助不勝感激。謝謝。如何對GridView進行排序?

protected void gridView_Sorting(object sender, GridViewSortEventArgs e) 
{ 

    DataTable dataTable = myDataTable(strSQL); 

    if (dataTable != null) 
    { 

     DataView dataView = new DataView(dataTable); 

     dataView.Sort = e.SortExpression + " " + SortDirection(e.SortDirection); 

     gridView.DataSource = dataView; 

     gridView.DataBind(); 

    } 

} 
//e.SortDirection always showing ascending 

ASPX GridView的立柱設計進行排序:

<asp:BoundField DataField="CREATE_DATE" HeaderText="Create Date" SortExpression="CREATE_DATE" /> 
+0

我認爲這是你需要排序的數據,而不是網格本身。 –

回答

3

您是否嘗試在標記中將GridViewAllowSorting屬性設置爲true?

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"> 
    <Columns> 
     ... 
    </Columns> 
</asp:GridView> 

或者,您也可以在以後的DataBind背後做在你的代碼:

GridView1.AllowSorting = true; 

此屬性允許用戶單擊列標題排序該列。

編輯:實際上,你必須創建邏輯來決定是否排序升序或降序(如果您使用「數據源控件」像SQLDataSourcee.SortDirection只會幫助你)。然後你可以改變你的dataView.Sort代碼一些這樣的:

if(someCondition) 
    dataView.Sort = e.SortExpression + " DESC"; 
else 
    dataView.Sort = e.SortExpression + " ASC"; 

哪裏someCondition是你的邏輯來決定排序哪種方式(例如,你可以跟蹤哪些最後的排序方向是該列,如果用戶再次點擊它,則做相反的操作)。

+0

是的,我在gridview設計中有這個屬性 Vidya

+0

@us er994276您是否明確設置了排序方向(僅查看它是否更改)?像這樣:'dataView.Sort = e.SortExpression +「DESC」;' – jadarnel27

+0

聽起來不錯。由於我不使用SQLDataSource e.SortDirection總是默認升序。非常感謝。 – Vidya

1

您綁定的數據之前,排序它的方向,你想,然後做:

gridview.DataSource=data; 
gridview.DataBind(); 

如果您的數據源是SQLDataSource或類似的東西,只要確保你的select語句按你想要的方式進行排序即可。

+0

這是我對Gridview列進行排序的代碼 – Vidya

+0

•\t protected void gridView_Sorting(object sender, – Vidya

+0

我編輯了我原來的問題.. – Vidya

相關問題