下面是我的排序代码,我想实现正向排序和反向排序,正向排序有效果,反向排序没有效果
=========================================================================================
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"];
....
}
=========================================================================================
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"];
....
}
string SortDirection="ASC"; //为排序方向变量赋初值
if(SortExpression==ViewState["SortExpression"].ToString()) //如果为当前排序列
{
SortDirection=(ViewState["SortDirection"].ToString()==SortDirection?"DESC":"ASC"); //获得下一次的排序状态 }
ViewState["SortExpression"]=SortExpression;
ViewState["SortDirection"]=SortDirection;