ホーム > .NET, ASP.NET 備忘録 > GridViewのページコントロールをカスタマイズする

GridViewのページコントロールをカスタマイズする

GridViewでページコントロールを利用する場合、デフォルトでは番号によるページ指定と前後への移動によるページ指定を併用することはできません。
ですが、GridViewのRowCreatedイベントに以下のように記述することで前後、および先頭と最後へのページ移動コントロールを追加することができます。

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Pager)
        {
            LinkButton FirstLinkButton = new LinkButton();
            FirstLinkButton.CommandName = "Page";
            FirstLinkButton.CommandArgument = "First";
            FirstLinkButton.Text = "<<";
            TableCell FirstCell = new TableCell();
            FirstCell.Controls.Add(FirstLinkButton);
            e.Row.Cells[0].Controls[0].Controls[0].Controls.AddAt(0, FirstCell);

            LinkButton PreviousLinkButton = new LinkButton();
            PreviousLinkButton.CommandName = "Page";
            PreviousLinkButton.CommandArgument = "Prev";
            PreviousLinkButton.Text = "<";
            TableCell PreviousCell = new TableCell();
            PreviousCell.Controls.Add(PreviousLinkButton);
            e.Row.Cells[0].Controls[0].Controls[0].Controls.AddAt(1, PreviousCell);

            LinkButton NextLinkButton = new LinkButton();
            NextLinkButton.CommandName = "Page";
            NextLinkButton.CommandArgument = "Next";
            NextLinkButton.Text = ">";
            TableCell NextCell = new TableCell();
            NextCell.Controls.Add(NextLinkButton);
            e.Row.Cells[0].Controls[0].Controls[0].Controls.Add(NextCell);

            LinkButton LastLinkButton = new LinkButton();
            LastLinkButton.CommandName = "Page";
            LastLinkButton.CommandArgument = "Last";
            LastLinkButton.Text = ">>";
            TableCell LastCell = new TableCell();
            LastCell.Controls.Add(LastLinkButton);
            e.Row.Cells[0].Controls[0].Controls[0].Controls.Add(LastCell);
        }
    }

このプログラムでは単にLinkButtonを追加しているだけですが、なぜこれでページが移動するのでしょうか。
その理由はLinkButtonのCommandNameとCommandArgumentにあります。
GridViewはあらかじめ決められているCommandNameとCommandArgumentが渡された場合、自動的にそのコマンドに応じた動作をするようになっているのです。
このため、LinkButtonやImageButtonを追加して、そこに適切なCommandName、CommandArgumentを設定すればそれに応じた動作はGridViewに任せることができます。

カテゴリー:.NET, ASP.NET 備忘録
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。