【发布时间】:2012-02-06 03:45:51
【问题描述】:
我有一个网格视图,我在其中实现了分页和排序。当我对表格进行排序并选择第 2 页时,排序丢失,后 20 条记录显示在 desc 中,如 gridview 绑定中所述
private DataSet BindGridView(string field)
{
DataSet ds = new DataSet()
string userQuery = "Select tbl_User.UserID, tbl_User.FirstName from tbl_user order by tbl_user.UserID desc";
UserTable.DataBind();
return ds;
}
<asp:GridView ID="UserTable" runat="server" PageSize="20" AllowPaging="True"
SelectedIndex="0" DataKeyNames="UserID" OnRowDataBound="UserTable_RowDataBound"
AutoGenerateColumns="false" OnPageIndexChanging="gridView_PageIndexChanging" AllowSorting="true" OnSorting="gridView_Sorting">
如何保留排序并执行分页,我将排序状态存储在会话中,我如何使用它来执行分页。
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
UserTable.PageIndex = e.NewPageIndex;
UserTable.DataBind();
DataView myView = new DataView(BindGridView(Session["useremail"].ToString()).Tables[0]);
}
protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = null;
if ((Session["UsersortExpression"] == null))
{
sortExpression = null;
}
else
{
sortExpression = (Session["UsersortExpression"].ToString());
}
if (sortExpression == e.SortExpression)
{
sortExpression += " DESC";
}
else
{
sortExpression = e.SortExpression;
}
DataView myView = new DataView(BindGridView(Session["useremail"].ToString()).Tables[0]);
myView.Sort = sortExpression;
UserTable.DataSource = myView;
UserTable.DataBind();
//save sort state
Session.Add("UsersortExpression", sortExpression);
}
【问题讨论】:
-
似乎您正在重新绑定页面索引中的网格,并再次在 BindGridView 中重新绑定。不要多次重新绑定网格。只需确保您的 BindGridView 方法在检查您的页面索引和排序逻辑后执行绑定即可。
-
如果我不从分页代码隐藏中调用 bindgridview,那么第 2 页没有被填充,它没有记录。我该怎么做,你能显示一些代码
标签: c# asp.net sorting gridview paging