Несколько дней назад я писал о <<Реализации подкачки страниц в хранимых процедурах>> и <<Подробное объяснение событий управления GridView>>. Позже некоторые люди спрашивали меня, как применить эту штуку в GridView. На самом деле, это очень просто! , в основном, как Существует проблема с сохранением номера PageIndex текущей страницы, но все проще решить. Поскольку в процессе разбиения на страницы: PageSize определен, мы можем использовать атрибут для его представления. сохраняйте PageIndex, а данные не очень большие. В принципе, ресурсов много не будет. Как говорится, сколько бы слов ни было сказано, не бывает примеров, которые были бы интуитивно понятны.
Здесь мы будем использовать скрытое поле. чтобы сохранить PageIndex, который является номером текущей страницы. При нажатии на предыдущую страницу его значение будет уменьшено. Во-первых, известно, что оно равно 0. Следует отметить, что номер первой страницы здесь равен 0. вместо 1. Давайте посмотрим на код, а потом проанализируем его!
1<asp:GridView ID="NewsGrid" runat="server" AutoGenerateColumns="False" AllowPaging="false" Width="100%">
2 <Столбцы>
3 <asp:BoundField DataField="NewsId" HeaderText="NewsID"/>
4 <asp:HyperLinkField DataNavigateUrlFields="NewsId" DataNavigateUrlFormatString="~/Details.aspx?ID={0}"
5 DataTextField="Title" HeaderText="Заголовок новости" ItemStyle-Width="70%"/>
6 <asp:BoundField DataField="PostTime" HeaderText="Время публикации"/>
7 <asp:CommandField HeaderText="Управление новостями" ShowCancelButton="False" ShowDeleteButton="True"
8 ShowEditButton="True"/>
9 </Колонки>
10 </asp:GridView>
11 <div style=" высота: 16 пикселей; отступ-верх: 5 пикселей; поле-право: 30 пикселей; float: вправо">
12 <asp:HiddenField ID="CurrentPage" runat="server" Value="0"/>
13 <asp:LinkButton ID="First" runat="server" CommandArgument="first" OnClick="PagerButton_Click">Home</asp:LinkButton>
14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev" OnClick="PagerButton_Click">Предыдущая страница</asp:LinkButton>
15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next" OnClick="PagerButton_Click">Следующая страница</asp:LinkButton>
16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last" OnClick="PagerButton_Click">Последняя страница</asp:LinkButton>
17 </div> Код в файле CS:
1 защищенный void PagerButton_Click (отправитель объекта, EventArgs e)
2 {
3 int pageIndx = Convert.ToInt32(CurrentPage.Value);
4 целых числа = NewsManager.GetNews(0, pageSize).TotalRecords;
5 целых страниц = (итого % pageSize) == 0 ? (итого/pageSize): (итого/pageSize + 1);
6 строковый arg = ((LinkButton)sender).CommandArgument.ToString().ToLower();
7 переключатель (аргумент)
8 {
9 случай «предыдущий»:
10, если (pageIndx > 0)
11 {
12 pageIndx -= 1;
13}
14 перерыв;
15 случай «следующий»:
16 if (pageIndx < страниц - 1)
17 {
18 страницIndx += 1;
19}
20 перерыв;
21 случай «последний»:
22 pageIndx = страниц - 1;
23 перерыв;
24по умолчанию:
25 страницИндкс = 0;
26 перерыв;
27}
28 ТекущаяСтраница.Значение = pageIndx.ToString();
29 NewsGrid.DataSource = NewsManager.GetNews(pageIndx, pageSize).Entities;
30 NewsGrid.DataBind();
31}
Разве это не очень просто? Вы поймете это после прочтения кода. Я не буду здесь вдаваться в подробности использования кнопок для передачи параметров. В <<Класс сущностей приложения EntitySet реализует аналогичные общие функции>. >здесь можно найти в статьях
http://www.cnblogs.com/xdotnet/archive/2006/09/29/gridview_paging_myself.html