У меня странный опыт работы с пейджингом в GridView.
Я пытаюсь лениво загрузить данные в мое представление, используя панель обновления с таймером и updateprogress, прикрепленным к нему.
Поэтому в основном я пытаюсь сделать так, чтобы при загрузке страницы с сеткой я запускал таймер, включив его. В событии timer_tick я выбираю данные и загружаю их в переменную. Затем вызывая databind для gridView, заставляя его связывать данные. Здесь я использую LinqDataSource для этого. Наконец, я обновляю пользовательский интерфейс с помощью метода Update на панели обновления.
Все это прекрасно работает с сортировкой и фильтрацией в виде сетки, но когда я делаю постраничную страничку, страницы сетки, как и должно быть, но шаблон подкачки всегда остается на первой странице (показывает 1 как активную). Есть идеи, люди? Вот часть моего кода:
<asp:LinqDataSource runat="server" ID="OrdersDataSource"
OnSelecting="OrdersDataSource_Selecting" AutoPage="false" />
<asp:GridView runat="server" ID="OrdersGridView" AutoGenerateColumns="false"
DataSourceID="OrdersDataSource"
AllowPaging="true" AllowSorting="true" PageSize="3">
<Columns>
...
<asp:Timer runat="server" ID="LazyLoadUpdatePanel"
Enabled="false"
Interval="1" OnTick="LazyLoadUpdatePanel_Tick" />
...
protected void LazyLoadUpdatePanel_Tick(object sender, EventArgs e)
{
if (datasource == null)
{
System.Threading.Thread.Sleep(2000);
datasource = customer.Orders;
OrdersGridView.DataBind();
OrdersUpdatePanel.Update();
}
LazyLoadUpdatePanel.Enabled = false;
}
Кстати, я пробовал с автостраничкой на источнике данных и без него. Это не сработало. Как я уже сказал, пейджинг, кажется, работает, пользовательский интерфейс просто не показывает, что я должен.