分页后 GridVIew 在搜索时不显示所有数据
After paging GridVIew does not display all data when searched
我的 GridView
在第二页执行搜索后没有显示正确的数据。
填充 GridView
并使用 PageIndexChanging
方法导航到第二页后,GridView
在应用搜索过滤器后不会刷新。它保留在同一页面上,但必须重新加载。
我的搜索调用了以下方法:
private void PopulatePeople()
{
lblAddError.Text = String.Empty;
if (ViewState["_message"] != null)
{
lblAddError.Visible = true;
lblAddError.Text = ViewState["_message"].ToString();
}
ViewState["_message"] = null;
int portfolio = int.Parse(ddlPortfolio.SelectedItem.Value);
ViewState["_portfolioID"] = portfolio;
string year = ddlYear.SelectedItem.Text;
string month = ddlMonth.SelectedItem.Text;
if (ViewState[_vsPeopleList] != null)
{
ViewState[_vsPeopleList] = null;
}
List<PeopleManagement> list = PeopleManagement.GetPeople(portfolio, year, month);
ViewState[_vsPeopleList] = list;
if(list.Count == 0)
{
gvPeople.Visible = false;
lblAddError.Visible = true;
lblAddError.Text = "No data available for current selection";
}
else
{
gvPeople.Visible = true;
gvPeople.DataSource = list;
gvPeople.DataBind();
}
}
此方法根据搜索过滤器显示数据。
我生成了 2 个页面。第一页有 10 条记录,第二页有 1 条记录。
当翻到第二页并在不更改任何搜索过滤器的情况下再次单击搜索时,GridView
仍然在第二页显示 1 条记录。但是,它应该显示包含 10 条记录的第一页。看起来,GridView
没有回到第一页。
这是我的PageIndexChanging
方法:
protected void gvPeople_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
lblAddError.Text = String.Empty;
List<PeopleManagement> list = (List<PeopleManagement>)ViewState[_vsPeopleList];
gvPeople.DataSource = list;
gvPeople.PageIndex = e.NewPageIndex;
gvPeople.DataBind();
}
我不知道出了什么问题。已经尝试调试了一段时间。
列表在第一次搜索时和页面索引更改时具有相同数量的记录。应该工作正常...
基因,
这是因为 PageIndex 属性 设置为您导航到的新页面。只需在搜索功能中将 PageIndex 重置为零即可。
我的 GridView
在第二页执行搜索后没有显示正确的数据。
填充 GridView
并使用 PageIndexChanging
方法导航到第二页后,GridView
在应用搜索过滤器后不会刷新。它保留在同一页面上,但必须重新加载。
我的搜索调用了以下方法:
private void PopulatePeople()
{
lblAddError.Text = String.Empty;
if (ViewState["_message"] != null)
{
lblAddError.Visible = true;
lblAddError.Text = ViewState["_message"].ToString();
}
ViewState["_message"] = null;
int portfolio = int.Parse(ddlPortfolio.SelectedItem.Value);
ViewState["_portfolioID"] = portfolio;
string year = ddlYear.SelectedItem.Text;
string month = ddlMonth.SelectedItem.Text;
if (ViewState[_vsPeopleList] != null)
{
ViewState[_vsPeopleList] = null;
}
List<PeopleManagement> list = PeopleManagement.GetPeople(portfolio, year, month);
ViewState[_vsPeopleList] = list;
if(list.Count == 0)
{
gvPeople.Visible = false;
lblAddError.Visible = true;
lblAddError.Text = "No data available for current selection";
}
else
{
gvPeople.Visible = true;
gvPeople.DataSource = list;
gvPeople.DataBind();
}
}
此方法根据搜索过滤器显示数据。
我生成了 2 个页面。第一页有 10 条记录,第二页有 1 条记录。
当翻到第二页并在不更改任何搜索过滤器的情况下再次单击搜索时,GridView
仍然在第二页显示 1 条记录。但是,它应该显示包含 10 条记录的第一页。看起来,GridView
没有回到第一页。
这是我的PageIndexChanging
方法:
protected void gvPeople_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
lblAddError.Text = String.Empty;
List<PeopleManagement> list = (List<PeopleManagement>)ViewState[_vsPeopleList];
gvPeople.DataSource = list;
gvPeople.PageIndex = e.NewPageIndex;
gvPeople.DataBind();
}
我不知道出了什么问题。已经尝试调试了一段时间。 列表在第一次搜索时和页面索引更改时具有相同数量的记录。应该工作正常...
基因,
这是因为 PageIndex 属性 设置为您导航到的新页面。只需在搜索功能中将 PageIndex 重置为零即可。