如何对GridView进行排序?

时间:2011-10-25 11:39:04

标签: c# asp.net

ASP.NET 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" />

2 个答案:

答案 0 :(得分:3)

您是否尝试在标记中将GridView的{​​{3}}属性设置为true?

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

或者,您可以在DataBind之后的代码中执行此操作:

GridView1.AllowSorting = true;

此属性允许用户单击列标题以对该列进行排序。

编辑: 您实际上必须创建逻辑来决定是升级还是降序 e.SortDirection只会帮助您如果您使用“数据源控件”,如SQLDataSource)。然后你可以将dataView.Sort代码改为这样的代码:

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

其中someCondition是您决定排序方式的逻辑(例如,您可以跟踪该列的最后排序方向,如果用户再次单击它,则执行相反的操作)。

答案 1 :(得分:1)

在绑定数据之前,请按照您想要的方向对其进行排序,然后执行以下操作:

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

如果您的数据源是SQLDataSource或类似的,请确保您的select语句按照您最初的方式进行排序。