Идея реализации такая же, как при экспорте в Excel и Word, описанном выше, то есть в добавление строк в GridView. Сначала объявите следующие элементы управления для отображения номера страницы: какая страница, сколько страниц всего, сколько записей, домашняя страница. , предыдущая страница, следующая страница Одна страница, последняя страница элементы управления перелистыванием
Метка lblCurrentPage;
Метка lblPageCount;
Метка lblRowsCount;
LinkButton btnFirst;
LinkButton btnPrev;
Кнопка ссылки btnNext;
LinkButton btnLast; В методе OnInit GridView инициализируйте элемент управления разбиением на страницы в методе Oninit элемента управления.
защищенное переопределение void OnInit (EventArgs e)
{
this.EnableViewState = true
lblCurrentPage = новая метка ();
lblCurrentPage.ForeColor = ColorTranslator.FromHtml("#e78a29");
lblCurrentPage.Text = "1";
lblPageCount = новая метка();
lblPageCount.Text = "1";
lblRowsCount = новая метка ();
lblRowsCount.ForeColor = ColorTranslator.FromHtml("#e78a29")
;
btnFirst.Text = "Домашняя страница";
btnFirst.Command += новый CommandEventHandler(NavigateToPage);
btnFirst.CommandName = "Пейджер";
btnFirst.CommandArgument = "Первый";
btnPrev = новая LinkButton();
btnPrev.Text = "Предыдущая страница";
btnPrev.Command += новый CommandEventHandler(NavigateToPage);
btnPrev.CommandName = "Пейджер";
btnPrev.CommandArgument = "Предыдущий"
= новая LinkButton();
btnNext.Text = "Следующая страница";
btnNext.Command += новый CommandEventHandler(NavigateToPage);
btnNext.CommandName = "Пейджер";
btnNext.CommandArgument = «Далее»
= новая LinkButton();
btnLast.Text = "Последняя страница";
btnLast.Command += новый CommandEventHandler(NavigateToPage);
btnLast.CommandName = "Пейджер";
btnLast.CommandArgument = "Последний"
;
}
Затем ключевой частью кода является добавление этих элементов управления в GridView путем создания подэлементов управления, как показано ниже:
Добавьте элементы управления страницами в метод создания дочерних элементов управления.
защищенное переопределение int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = base.CreateChildControls(dataSource, dataBinding);
если (Шовтулбар)
{
пытаться
{
Строка GridViewRow = новая GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = новая TableCell();
c.Width = Unit.Percentage(100);
c.ColumnSpan = this.Columns.Count;
row.Cells.Add(c);
TableCell cell1 = новая TableCell();
Таблица таблица = новая таблица();
TableRow r = новая TableRow();
таблица.Rows.Add(r);
таблица.Ширина = Единица.Процент(100);
c.Controls.Add(таблица);
r.Cells.Add(ячейка1);
Литерал l1 = новый Литерал();
l1.Text = "Страница:";
ячейка1.Controls.Add(l1);
ячейка1.Wrap = ложь;
cell1.Controls.Add(lblCurrentPage);
l1 = новый литерал();
l1.Text = "Страница/";
ячейка1.Controls.Add(l1);
cell1.Controls.Add(lblPageCount);
l1 = новый литерал();
l1.Text = "Страница, всего";
ячейка1.Controls.Add(l1);
cell1.Controls.Add(lblRowsCount);
l1 = новый литерал();
l1.Text = "запись";
ячейка1.ГоризонтальноеВыравнивание = ГоризонтальноеВыравнивание.Влево;
ячейка1.Controls.Add(l1);
TableCell cell2 = новая TableCell();
ячейка2.ГоризонтальноеВыравнивание = ГоризонтальноеВыравнивание.Вправо;
ячейка2.Wrap = ложь;
l1 = новый литерал();
l1.Text = "[";
ячейка2.Controls.Add(l1);
cell2.Controls.Add(btnFirst);
l1 = новый литерал();
l1.Текст = "] ";
cell2.Controls.Add(l1);
l1 = новый литерал();
l1.Text = "[";
ячейка2.Controls.Add(l1);
cell2.Controls.Add(btnPrev);
l1 = новый литерал();
l1.Текст = "] ";
cell2.Controls.Add(l1);
l1 = новый литерал();
l1.Text = "[";
ячейка2.Controls.Add(l1);
cell2.Controls.Add(btnNext);
l1 = новый литерал();
l1.Текст = "] ";
cell2.Controls.Add(l1);
l1 = новый литерал();
l1.Text = "[";
ячейка2.Controls.Add(l1);
cell2.Controls.Add(btnLast);
l1 = новый литерал();
l1.Текст = "] ";
ячейка2.Controls.Add(l1);
r.Cells.Add(ячейка2);
this.Controls[0].Controls.AddAt(0, строка);
}
ловить
{
}
}
вернуть разрешение;
}Ниже показано событие, которое обрабатывает разбиение по страницам, аналогично RowCommand.
public void NavigateToPage (отправитель объекта, CommandEventArgs e)
{
btnFirst.Enabled = правда;
btnPrev.Enabled = правда;
btnNext.Enabled = правда;
btnLast.Enabled = правда;
переключатель (e.CommandArgument.ToString())
{
случай «Предыдущий»:
если (this.PageIndex > 0)
{
this.PageIndex -= 1
}
;
перерыв;
случай «Далее»:
если (this.PageIndex < (this.PageCount - 1))
{
this.PageIndex += 1
;
перерыв;
случай «Первый»:
this.PageIndex = 0;
перерыв;
случай «Последний»:
this.PageIndex = this.PageCount - 1;
перерыв;
}
если (this.PageIndex == 0)
{
btnFirst.Enabled = ложь;
btnPrev.Enabled = ложь;
если (this.PageCount == 1)
{
btnLast.Enabled = ложь;
btnNext.Enabled = ложь;
}
}
иначе, если (this.PageIndex == this.PageCount - 1)
{
btnLast.Enabled = ложь;
btnNext.Enabled = ложь;
}
ОнПривязка();
}Таким образом, можно легко реализовать персонализированный пейджинг. Добро пожаловать к нам.