问题描述:因为需要用到手工排序,所以必须写排序事件:如下
//**********************************************************************
//排序事件code
protected void girdview1_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt =Article_BLLSub.GetArticleByClassI();//get数据集合
string sortExpression = e.SortExpression;//获取绑定字段
if ( e.SortDirection == SortDirection.Ascending) //设置排序方向(狗肉)
{
DataView dv = new DataView(dt);
dv.Sort = sortExpression + " "+"desc";//一定要加空格来分割哦
GridView1.DataSource = dv; //将DataView绑定到GridView上
GridView1.DataBind();
}
else
{
DataView dv = new DataView(dt);
dv.Sort = sortExpression + " "+"asc";";//一定要加空格来分割哦
GridView1.DataSource = dv; //将DataView绑定到GridView上
GridView1.DataBind(); }
}
//**********************************************************************
问题出在 e.SortDirection,我们一般排序肯定要 正序和倒序,但是在此,这个事件方向老是 正序,所以我们的else永远也执行不到,因为我们没有单独事件指定正序或者是的倒序,我们只是点字段head,所以,我们可以定义 静态变量 static bool bl=false;
然后再 sorting 事件中这样
//**********************************************************************
//排序事件code
protected void girdview1_Sorting(object sender, GridViewSortEventArgs e)
{
bl=!bl;//这样就不断变化啦!
DataTable dt =Article_BLLSub.GetArticleByClassI();//get数据集合
string sortExpression = e.SortExpression;//获取绑定字段
if ( bl) //true正序
{
DataView dv = new DataView(dt);
dv.Sort = sortExpression + " "+"desc";//一定要加空格来分割哦
GridView1.DataSource = dv; //将DataView绑定到GridView上
GridView1.DataBind();
}
else
{
DataView dv = new DataView(dt);
dv.Sort = sortExpression + " "+"asc";";//一定要加空格来分割哦
GridView1.DataSource = dv; //将DataView绑定到GridView上
GridView1.DataBind(); }
}
//**********************************************************************
本文作者:chinadaima 来源:http://hi.baidu.com/chinadaima/
CIO之家 www.ciozj.com 微信公众号:imciow