2011-10-25 60 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

相关问题