在一个项目中遇到这么个情况:gridview跟datatbale绑定的。这么做法就不能用排序功能了,要自己写这个功能。小弟是参照别人提供的方法实现的这个功能。
参照的链接:
http://www.highoncoding.com/Articles/176_Sorting_GridView_Manually_.aspx。 不想看英文的就看小弟下面写的,想看原文的,就点上面那个链接吧。
public DataTable CreateData()
{
string query = "";//SQL 文
DataSet ds = new DataSet();
ds = Sqlcon.GetDataBySql(query);//数据库查询方法,以dataset形式返回
DataTable dt = ds.Tables[0];
return dt;
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression, " DESC");
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, " ASC");
}
}
private void SortGridView(string sortExpression, string direction)
{
DataTable dt = CreateData();
if (dt != null)
{
DataView dv = new DataView(dt);
dv.Sort = sortExpression + direction;
GridView1.DataSource = dv;
GridView1.DataBind();
}
}
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
{
ViewState["sortDirection"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["sortDirection"];
}
set
{
ViewState["sortDirection"] = value;
}
}