【发布时间】:2012-08-08 03:06:34
【问题描述】:
大家好,我的 gridview 排序有问题。假设我的gridview 有10 行数据和2 列,名称和年龄。分页设置为每页 5 行数据。当我单击名称时,它已正确排序。但是,当我单击下一页时,它再次变为“未排序”。请帮忙!我在下面附上了事件处理程序。
protected void SearchResultGridView_Sorting(object sender, GridViewSortEventArgs e)
{
if (ViewState["SearchDS"] == null)
Response.Redirect("PESearh.aspx");
DataTable SearchDT = ((DataSet)ViewState["SearchDS"]).Tables[0];
string sortExpression = e.SortExpression;
if (ViewState["SearchSort"] != null && ViewState["SearchSort"].ToString().Length > 0)
{
if (!ViewState["SearchSort"].ToString().Contains(sortExpression))
GridViewSortDirection = SortDirection.Descending;
}
else
{
GridViewSortDirection = SortDirection.Descending;
}
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
sortExpression += " DESC";
SearchDT.DefaultView.Sort = sortExpression;
}
else
{
GridViewSortDirection = SortDirection.Ascending;
sortExpression += " ASC";
SearchDT.DefaultView.Sort = sortExpression;
}
ViewState["SearchSort"] = sortExpression;
this.SearchResultGridView.DataSource = SearchDT;
this.SearchResultGridView.DataBind();
}
对于我的换页
protected void SearchResultGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SearchResultGridView.DataSource = ViewState["SearchDS"];
SearchResultGridView.PageIndex = e.NewPageIndex;
SearchResultGridView.DataBind();
}
我需要帮助,以便先前的排序也对下一页进行排序。请帮忙谢谢!
注意:我不想在绑定之前对数据进行排序,因为我希望用户先看到数据,然后再决定要绑定的内容。
【问题讨论】:
-
“我希望用户先看到数据,然后再决定绑定什么”是什么意思?我不明白为什么这会阻止您像在
SearchResultGridView_Sorting中那样设置DefaultView.Sort。 -
这段代码是从我团队的另一位开发人员那里复制而来的,我不知道他在做什么。无论如何我的意思是,我不想在绑定数据时在 SQL 代码中对其进行排序。我只想通过单击网格标题进行手动排序
-
我遇到的麻烦在于这一行:string sortExpression = e.SortExpression; e 不同