我已经在GridView
控件中实现了分类和分页。代码如下:
<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();