我一般会把绑定Gridview的方法封起来
  public void SortGridView(GridView gv, DataTable dt, string orderByString, bool isAsc)
    {
        DataView dv = dt.DefaultView;
        if (orderByString.Trim().Length > 0)
        {
            if (isAsc)
                dv.Sort = orderByString + " asc";
            else
                dv.Sort = orderByString + " desc";
        }
        gv.DataSource = dv;
        gv.DataBind();
    }然后在调用页面加两个属性,string orderbystring和bool isasc在
protected void GridView_ReferedDataDetail_Sorting(object sender, GridViewSortEventArgs e)
{
    if (this.orderStirng == e.SortExpression)//点相同倒序
            isAsc = !isAsc;
        else
            this.orderString = e.SortExpression;//按其他的列排序        this.bindGridView();
}
private void bindGridView()
{
   SortGridView(this.GridView1, dt, orderStirng, isAsc);   
}