구현 아이디어는 위의 Excel 및 Word 내보내기와 동일합니다. 이는 GridView에 행을 추가하는 것입니다. 먼저 다음 컨트롤을 선언하여 페이지 번호, 총 페이지 수, 레코드 수, 홈 페이지를 표시합니다. , 이전 페이지, 다음 한 페이지, 마지막 페이지 페이징 제어
lblCurrentPage 라벨;
라벨 lblPageCount;
레이블 lblRowsCount;
링크버튼 btnFirst;
링크버튼 btnPrev;
링크버튼 btnNext;
LinkButton btnLast; GridView의 OnInit 메서드에서 컨트롤의 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 = new LinkButton();
btnFirst.Text = "홈페이지";
btnFirst.Command += new CommandEventHandler(NavigateToPage);
btnFirst.CommandName = "호출기";
btnFirst.CommandArgument = "첫 번째";
btnPrev = new LinkButton();
btnPrev.Text = "이전 페이지";
btnPrev.Command += new CommandEventHandler(NavigateToPage);
btnPrev.CommandName = "호출기";
btnPrev.CommandArgument = "이전"
btnNext = new LinkButton();
btnNext.Text = "다음 페이지";
btnNext.Command += new CommandEventHandler(NavigateToPage);
btnNext.CommandName = "호출기";
btnNext.CommandArgument = "다음";
btnLast = new LinkButton();
btnLast.Text = "마지막 페이지";
btnLast.Command += new CommandEventHandler(NavigateToPage);
btnLast.CommandName = "호출기";
btnLast.CommandArgument = "마지막";
base.OnInit(e);
}
그런 다음 코드의 핵심 부분은 다음과 같이 하위 컨트롤을 만들어 GridView에 이러한 컨트롤을 추가하는 방법입니다.
하위 컨트롤을 만드는 방법에 페이징 컨트롤 추가
protected 재정의 int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = base.CreateChildControls(dataSource, dataBinding);
if(ShowToolBar)
{
노력하다
{
GridViewRow 행 = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = 새로운 TableCell();
c.폭 = 단위.백분율(100);
c.ColumnSpan = this.Columns.Count;
행.Cells.Add(c);
TableCell cell1 = 새로운 TableCell();
테이블 테이블 = 새 테이블();
TableRow r = 새로운 TableRow();
테이블.행.추가(r);
table.Width = Unit.Percentage(100);
c.Controls.Add(테이블);
r.Cells.Add(cell1);
리터럴 l1 = 새로운 리터럴();
l1.Text = "페이지:";
cell1.Controls.Add(l1);
cell1.Wrap = 거짓;
cell1.Controls.Add(lblCurrentPage);
l1 = 새로운 리터럴();
l1.Text = "페이지/";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblPageCount);
l1 = 새로운 리터럴();
l1.Text = "페이지, 전체";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblRowsCount);
l1 = 새로운 리터럴();
l1.Text = "녹음";
cell1.HorizontalAlign = 수평정렬.왼쪽;
cell1.Controls.Add(l1);
TableCell cell2 = 새로운 TableCell();
cell2.HorizontalAlign = 수평정렬.오른쪽;
cell2.Wrap = 거짓;
l1 = 새로운 리터럴();
l1.텍스트 = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnFirst);
l1 = 새로운 리터럴();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 새로운 리터럴();
l1.텍스트 = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnPrev);
l1 = 새로운 리터럴();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 새로운 리터럴();
l1.텍스트 = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnNext);
l1 = 새로운 리터럴();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 새로운 리터럴();
l1.텍스트 = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnLast);
l1 = 새로운 리터럴();
l1.Text = "] ";
cell2.Controls.Add(l1);
r.Cells.Add(cell2);
this.Controls[0].Controls.AddAt(0, 행);
}
잡다
{
}
}
해상도를 반환;
}다음은 RowCommand와 유사하게 페이징을 처리하는 이벤트입니다.
공개 무효 NavigateToPage(개체 전송자, CommandEventArgs e)
{
btnFirst.Enabled = true;
btnPrev.Enabled = true;
btnNext.Enabled = true;
btnLast.Enabled = true;
스위치(e.CommandArgument.ToString())
{
사례 "이전":
if (this.PageIndex > 0)
{
this.PageIndex -= 1
;
부서지다;
"다음":
if (this.PageIndex < (this.PageCount - 1))
{
this.PageIndex += 1
;
부서지다;
"첫번째" 경우:
this.PageIndex = 0;
부서지다;
사례 "마지막":
this.PageIndex = this.PageCount - 1;
부서지다;
}
if (this.PageIndex == 0)
{
btnFirst.Enabled = 거짓;
btnPrev.Enabled = 거짓;
if (this.PageCount == 1)
{
btnLast.Enabled = 거짓;
btnNext.Enabled = 거짓;
}
}
else if (this.PageIndex == this.PageCount - 1)
{
btnLast.Enabled = 거짓;
btnNext.Enabled = 거짓;
}
온바인드();
}이러한 방법으로 개인화된 페이징을 쉽게 실현할 수 있습니다.