У меня есть разбитый на страницы ASP.NET ListView. Показанные данные фильтрованы, которым может управлять форма. Когда форма фильтра изменяется, я создаю новый запрос и выполняю DataBind.
Проблема однако, когда я перехожу к следующей странице и устанавливаю фильтр, шоу ListView "Никакие данные, была возвращена". Это не странно, потому что после того, как фильтр применяется, существует только одна страница данных.
Таким образом, то, что я хочу сделать, сбрасывается пейджер. Это - правильное решение проблемы? И как я делаю это?
Я использую этот прием в моем обработчике нагрузки. Он не сбрасывает пейджер, если количество элементов результата совпадает, но индекс страницы по-прежнему будет действителен, так что я могу смириться с этим пока.
if (IsPostBack)
{
DataPager pgr = MyListView.FindControl("MyPager") as DataPager;
if (pgr != null && MyListView.Items.Count != pgr.TotalRowCount)
{
pgr.SetPageProperties(0, pgr.MaximumRows, false);
}
}
Если вы знаете, как это сделать, это просто. Я добавил приведенный ниже код в мои onchange
-события моего фильтра:
DataPager pager = ListViewReference.FindControl("DataPagerId") as DataPager;
if (pager != null)
{
pager.SetPageProperties(0, pager.PageSize, true);
}