排序是失去了对一个GridView asp.net
问题描述:
我已经实现在GridView
控制分拣和分页的页面索引变化。代码如下:排序是失去了对一个GridView asp.net
<asp:GridView ShowHeaderWhenEmpty="True" CssClass="Grid"
AlternatingRowStyle-CssClass="alt" AllowPaging="True" PageSize="15" OnPageIndexChanging="grdAllRequests_PageIndexChanging"
PagerStyle-CssClass="pgr" OnSorting="grdAllRequests_Sorting" AllowSorting="True"
EmptyDataText="No data to show" ID="grdAllRequests" runat="server" AutoGenerateColumns="false"
OnRowDataBound="grdAllRequests_RowDataBound">
下面是背后的代码分页和排序
protected void grdAllRequests_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grdAllRequests.PageIndex = e.NewPageIndex;
DataTable dt = (DataTable)ViewState["dtAllRequests"];
BindDataBAL bind = new BindDataBAL();
bind.BindGridData(grdAllRequests, dt);
}
protected void grdAllRequests_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dtrslt = (DataTable)ViewState["dtAllRequests"];
if (dtrslt.Rows.Count > 0)
{
if (Convert.ToString(ViewState["sortdr"]) == "Asc")
{
dtrslt.DefaultView.Sort = e.SortExpression + " Desc";
ViewState["sortdr"] = "Desc";
}
else
{
dtrslt.DefaultView.Sort = e.SortExpression + " Asc";
ViewState["sortdr"] = "Asc";
}
ViewState["dtAllRequests"] = dtrslt;
grdAllRequests.DataSource = dtrslt;
grdAllRequests.DataBind();
}
}
现在是当我在任何标题点击正确执行问题的排序,但是当我尝试导航到下一页,然后排序失去。不知道发生了什么问题。请帮助。
答
你必须使用DefaultView.ToTable();
dtrslt.DefaultView.Sort = e.SortExpression + " Desc";
dtrslt = dtrslt.DefaultView.ToTable();