A ideia de implementação é a mesma da exportação para Excel e Word acima, que é adicionar linhas no GridView. Primeiro, declare os seguintes controles para exibir o número da página: qual página, quantas páginas no total, quantos registros, página inicial. , página anterior, próxima Uma página, última página controles para paginação
Rótulo lblCurrentPage;
Rótulo lblPageCount;
Rótulo lblRowsCount;
LinkButton btnPrimeiro;
LinkButton btnAnterior;
LinkButton btnNext;
LinkButton btnLast; No método OnInit do GridView, inicialize esses controles.
substituição protegida void OnInit (EventArgs e)
{
this.EnableViewState = true;
lblCurrentPage = new Label();
lblCurrentPage.ForeColor = ColorTranslator.FromHtml("#e78a29");
lblCurrentPage.Text = "1";
lblPageCount = new Label();
lblPageCount.Text = "1";
lblRowsCount = new Label();
lblRowsCount.ForeColor = ColorTranslator.FromHtml("#e78a29")
;
btnFirst.Text = "Página inicial";
btnFirst.Command += new CommandEventHandler(NavigateToPage);
btnFirst.CommandName = "Pager";
btnFirst.CommandArgument = "Primeiro";
btnPrev = new LinkButton();
btnPrev.Text = "Página anterior";
btnPrev.Command += new CommandEventHandler(NavigateToPage);
btnPrev.CommandName = "Pager";
btnPrev.CommandArgument = "Anterior";
btnNext = new LinkButton();
btnNext.Text = "Próxima página";
btnNext.Command += new CommandEventHandler(NavigateToPage);
btnNext.CommandName = "Pager";
btnNext.CommandArgument = "Próximo"
btnLast = new LinkButton();
btnLast.Text = "Última página";
btnLast.Command += new CommandEventHandler(NavigateToPage);
btnLast.CommandName = "Pager";
btnLast.CommandArgument = "Último";
base.OnInit(e);
}
Então a parte principal do código é como adicionar esses controles ao GridView criando subcontroles, como segue:
Adicionar controles de paginação no método de criação de controles filhos
substituição protegida int CreateChildControls (System.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = base.CreateChildControls(dataSource, dataBinding);
if(MostraBarra de Ferramentas)
{
tentar
{
Linha GridViewRow = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = new TableCell();
c.Largura = Unidade.Percentagem(100);
c.ColumnSpan = this.Columns.Count;
linha.Células.Add(c);
TableCell célula1 = new TableCell();
Tabela tabela = new Tabela();
TableRow r = new TableRow();
tabela.Rows.Add(r);
tabela.Largura = Unidade.Percentagem(100);
c.Controls.Add(tabela);
r.Cells.Add(célula1);
Literal l1 = novo Literal();
l1.Text = "Página:";
célula1.Controls.Add(l1);
célula1.Wrap = falso;
cell1.Controls.Add(lblCurrentPage);
l1 = novo Literal();
l1.Text = "Página/";
célula1.Controls.Add(l1);
cell1.Controls.Add(lblPageCount);
l1 = novo Literal();
l1.Text = "Página, total";
célula1.Controls.Add(l1);
cell1.Controls.Add(lblRowsCount);
l1 = novo Literal();
l1.Text = "registro";
célula1.HorizontalAlign = HorizontalAlign.Left;
célula1.Controls.Add(l1);
TableCell célula2 = new TableCell();
célula2.HorizontalAlign = HorizontalAlign.Right;
célula2.Wrap = falso;
l1 = novo Literal();
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnPrimeiro);
l1 = novo Literal();
l1.Text = "] ";
cell2.Controls.Add(l1)
;
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnPrev);
l1 = novo Literal();
l1.Text = "] ";
cell2.Controls.Add(l1)
;
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnNext);
l1 = novo Literal();
l1.Text = "] ";
cell2.Controls.Add(l1)
;
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnÚltimo);
l1 = novo Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
r.Cells.Add(célula2);
this.Controls[0].Controls.AddAt(0, linha);
}
pegar
{
}
}
retornar res;
}A seguir está o evento que trata da paginação, semelhante a RowCommand
public void NavigateToPage(objeto remetente, CommandEventArgs e)
{
btnFirst.Enabled = verdadeiro;
btnPrev.Enabled = verdadeiro;
btnNext.Enabled = verdadeiro;
btnLast.Enabled = verdadeiro;
opção (e.CommandArgument.ToString())
{
caso "Anterior":
se (este.PageIndex > 0)
{
this.PageIndex -= 1
;
quebrar;
caso "Próximo":
if (this.PageIndex <(this.PageCount - 1))
{
this.PageIndex += 1
;
quebrar;
caso "Primeiro":
this.PageIndex = 0;
quebrar;
caso "Último":
this.PageIndex = this.PageCount - 1;
quebrar;
}
se (este.PageIndex == 0)
{
btnFirst.Enabled = falso;
btnPrev.Enabled = falso;
se (this.PageCount == 1)
{
btnLast.Enabled = falso;
btnNext.Enabled = falso;
}
}
senão if (this.PageIndex == this.PageCount - 1)
{
btnLast.Enabled = falso;
btnNext.Enabled = falso;
}
OnBind();
}Desta forma, uma paginação personalizada pode ser facilmente realizada. Bem-vindo a juntar-se a nós.