下面是我的排序代码,我想实现正向排序和反向排序,正向排序有效果,反向排序没有效果
=========================================================================================
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string HeadText;
int i;
foreach(DataGridColumn column in DataGrid1.Columns)
{
if(column.SortExpression == e.SortExpression)
{
HeadText = column.HeaderText;
i = HeadText.IndexOf("▲",0,HeadText.Length);
if(i==0)
{
column.HeaderText = column.HeaderText + "▼";
ViewState["Order"] = " DESC";
}
else
{
i = HeadText.IndexOf("▼",0,HeadText.Length);
if(i==0)
{
column.HeaderText = column.HeaderText + "▲";
ViewState["Order"] = " ASC";
}
else
{
column.HeaderText = column.HeaderText + "▲";
ViewState["Order"] = " ASC";
}
}
}
}

DataGrid1.CurrentPageIndex = 0;
ViewState["SortExprValue"] = e.SortExpression;
BindData(e.SortExpression);
ShowStats();
}
其中,ViewState["SortExprValue"]是用来存储排序表达式,ViewState["Order"]是用来存储正反向排序的标志,在引用的时候采用如下的方法:
public void BindData(string orderBy)
{
    string SQL_QUERY = "SELECT I* FROM Books order by " + orderBy +ViewState["Order"];
    ....
}

解决方案 »

  1.   

    string SortExpression=e.SortExpression.ToString(); //获得当前排序表达式
    string SortDirection="ASC"; //为排序方向变量赋初值
    if(SortExpression==ViewState["SortExpression"].ToString()) //如果为当前排序列
    {
    SortDirection=(ViewState["SortDirection"].ToString()==SortDirection?"DESC":"ASC"); //获得下一次的排序状态 }
    ViewState["SortExpression"]=SortExpression;
    ViewState["SortDirection"]=SortDirection;
      

  2.   

    qqdao(青青岛) 谢谢您的回复,还有一问题,就是在列中如何实现排序的小箭头呢?