実装の考え方は上記の Excel および Word のエクスポートと同じで、GridView に行を追加します。まず、ページ番号、合計ページ数、レコード数、ホームページを表示するコントロールを宣言します。 、前のページ、次の 1 ページ、最後のページ ページングのコントロール
ラベル lblCurrentPage;
ラベル lblPageCount;
ラベル lblRowsCount;
リンクボタン btnFirst;
リンクボタン btnPrev;
リンクボタンボタン次へ;
LinkButton btnLast; GridView の OnInit メソッドで、コントロールの Oninit メソッドでページング コントロールを初期化します。
protected オーバーライド 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 = "最後"
;
、
コードの重要な部分は、次のようにサブコントロールを作成して、これらのコントロールを GridView に追加する方法です。
子コントロールを作成するメソッドにページング コントロールを追加します。
protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = Base.CreateChildControls(dataSource, dataBinding);
if(ツールバーの表示)
{
試す
{
GridViewRow 行 = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = new TableCell();
c.幅 = 単位.パーセンテージ(100);
c.ColumnSpan = this.Columns.Count;
row.Cells.Add(c);
TableCell cell1 = new TableCell();
テーブル table = new Table();
TableRow r = new TableRow();
table.Rows.Add(r);
table.Width = Unit.Percentage(100);
c.Controls.Add(テーブル);
r.Cells.Add(セル1);
リテラル l1 = 新しいリテラル();
l1.Text = "ページ:";
cell1.Controls.Add(l1);
cell1.Wrap = false;
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 = horizontalAlign.Left;
cell1.Controls.Add(l1);
TableCell cell2 = new TableCell();
cell2.horizontalAlign = horizontalAlign.Right;
cell2.Wrap = false;
l1 = 新しいリテラル();
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnFirst);
l1 = 新しいリテラル();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 新しいリテラル();
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnPrev);
l1 = 新しいリテラル();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 新しいリテラル();
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnNext);
l1 = 新しいリテラル();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = 新しいリテラル();
l1.Text = "[";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnLast);
l1 = 新しいリテラル();
l1.Text = "] ";
cell2.Controls.Add(l1);
r.Cells.Add(セル2);
this.Controls[0].Controls.AddAt(0, row);
}
キャッチ
{
}
}
応答を返します。
以下は、RowCommand と同様に、ページングを処理するイベントです。
public void 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 = false;
btnPrev.Enabled = false;
if (this.PageCount == 1)
{
btnLast.Enabled = false;
btnNext.Enabled = false;
}
}
else if (this.PageIndex == this.PageCount - 1)
{
btnLast.Enabled = false;
btnNext.Enabled = false;
}
OnBind();
}このようにして、パーソナライズされたページングを簡単に実現できます。