バージョン

ページング テンプレート

始める前に

WebHierarchicalDataGrid™ コントロールのページング テンプレート機能で、ページャーのルック アンド フィールをユーザーの仕様にカスタマイズできます。コントロールをテンプレートに追加できますが、ページャー テンプレートの使用では、ページングメカニズムを手動で操作する必要があります。

達成すること

2 つのボタンとドロップダウン リストを使用して、WebHierarchicalDataGrid の親バンドのページングを設定します。2 つのボタンは前ページと次ページへの移動を処理しますが、ドロップダウン リストは選択したページに移動します。

次の手順を実行します

  1. WebHierarchicalDataGrid を WebHierarchicalDataSource™ コンポーネントにバインドし、Categories および Products テーブルからデータを取得します。この詳細は、 階層的なデータ ソースにバインドトピックを参照してください。

  2. Microsoft® Visual Studio™ [プロパティ] ウィンドウで、 Bands プロパティを指定して、省略記号 (…​) ボタンをクリックし、[WebHierarchicalDataGrid バンドの編集] ダイアログを起動します。

  3. 親バンドでは、Behaviors プロパティを指定して、省略記号 (…​) ボタンをクリックし、[動作エディター] ダイアログを起動します。

  4. この動作を追加して有効にするには、左のリストから ページング の隣りのチェックボックスをチェックします。このトピックでは、PageSize は 3 に設定されます。EnableInheritance プロパティは、子バンドにページングを設定するために有効にできます。

  5. このプロパティで、 PagingClientEvents を展開し、イベント ハンドラ名 WebHierarchicalDataGrid1_PageIndexChanged を入力して PageIndexChanged イベントを処理します。

WebHierarchicalDataGrid Using Custom Paging Template 01.png
  1. [適用] そして [OK] ボタンをクリックしてエディターを閉じます。

  2. WebHierarchicalDataGrid を右クリックして編集テンプレートを強調表示します。ページャー テンプレートのオプションが表示されます。

注: 複数の動作テンプレートを使用している場合、編集テンプレートのサブメニューのセクションとして動作テンプレートが表示されます。

  1. コンテキスト メニューからページャー テンプレートを選択します。WebHierarchicalDataGrid 表示は、テンプレート編集表示に変わります。

注: 追加した動作に基づき、ページャー テンプレートに加えて他のテンプレートが表示されます。

  1. 2 つの HTML ボタンとひとつの ASP.NET DropDownList コントロールをテンプレートに追加します。

    1. 2 つのボタンの間にドロップダウン リストを配置します。

    2. ドロップダウンリストの前のボタンの値を「前へ」に設定し、その ID を PrevButton に設定します。

    3. 2 番目のボタンの値を「次へ」に設定し、その ID を NextButton に設定します。

    4. 各ボタンをダブルクリックしてそれらにイベント ハンドラを追加します。

WebHierarchicalDataGrid Using Custom Paging Template 02.png
  1. ドロップダウン リストに IndexChanged という名前のクライアント側のハンドラを追加します。ドロップダウンから値を選択する場合、これは WebHierarchicalDataGrid の手動ページングを処理します。ドロップダウン リストの HTML は以下のように表示されるはずです:

HTML の場合:

<asp:DropDownList ID="DropDownList1" runat="server" onchange="return IndexChanged()">
</asp:DropDownList>
  1. WebHierarchicalDataGrid を再び右クリックして、[テンプレート編集の終了] を選択します。通常のグリッド表示に戻ります。 .

WebHierarchicalDataGrid コントロールの RowIslandDataBinding イベントでデータのページ数で DropDownList コントロールを生成します。

  1. ページャー テンプレートでドロップダウン リストへの参照を取得します。これはテンプレート内のコントロールのコンテナである PagerTemplateContainer へのアクセスと、テンプレート内のコントロールを見つける必要があります。

  2. ページ数でドロップダウン リストを生成します。RowIslandDataBinding イベントを処理して以下のコードを書き込みます。

Visual Basic の場合:

AddHandler Me.WebHierarchicalDataGrid1.RowIslandDataBinding, AddressOf WebHierarchicalDataGrid1_RowIslandDataBinding
Protected Sub WebHierarchicalDataGrid1_RowIslandDataBinding(ByVal sender As Object, ByVal e As RowIslandEventArgs)
If e.RowIsland.DataMember = "SqlDataSource1_DefaultView" Then
   If Not IsPostBack Then
      Dim list1 As DropDownList =   DirectCast(e.RowIsland.Behaviors.Paging.PagerTemplateContainer.FindControl("DropDownList1"), DropDownList)
         '簡素化のため、いくつかのリスト項目をハードコーディングしています。本番アプリケーションでは、
     'ロジックを使用して、どれぐらいのページ数がリストに追加されるべきかを計算します。
         For i As Integer = 1 To 3
            list1.Items.Add(i.ToString())
         Next
      End If
   End If
End Sub

C# の場合:

this.WebHierarchicalDataGrid1.RowIslandDataBinding += new RowIslandEventHandler(WebHierarchicalDataGrid1_RowIslandDataBinding);
protected void WebHierarchicalDataGrid1_RowIslandDataBinding(object sender, RowIslandEventArgs e)
{
   if (e.RowIsland.DataMember == "SqlDataSource1_DefaultView")
   {
      if (!IsPostBack)
      {
         DropDownList list1 = (DropDownList)e.RowIsland.Behaviors.Paging.PagerTemplateContainer.FindControl("DropDownList1");
         //簡素化のため、いくつかのリスト項目を
         //ハードコーディングしています。本番アプリケーションでは、
         //ロジックを使用して、どれぐらいのページ数が
         //リストに追加されるべきかを計算します。
         for (int i = 1; i $$<=$$ 3; i++)
         {
            list1.Items.Add(i.ToString());
         }
      }
   }
}
  1. ドロップダウン リストの IndexChanged イベント ハンドラで WebHierarchicalDataGrid を手動でページングします。

    1. WebHierarchicalDataGrid への参照を取得します。

    2. ドロップダウン リストから選択した値に基づき WebHierarchicalDataGrid をページします。

注: DropDownList コントロールのクライアント ID に注意してください。これは、コントロールが複数のコンテナ コントロール内に配置されているからです(別名:テンプレート)。この例では、クライアント ID はハードコードされます。本番アプリケーションでは、ランタイムにこの ID を動的に取得します。

JavaScript の場合:

function IndexChanged()
{
   var dropdownlist = document.getElementById("WebHierarchicalDataGrid1_ctl00_ctl01_DropDownList1");
   var grid = $find("WebHierarchicalDataGrid1");
   var parentGrid = grid.get_gridView();
   var newValue = dropdownlist.selectedIndex;
   parentGrid.get_behaviors().get_paging().set_pageIndex(newValue);
}
  1. Prev ボタン コントロールのクライアント側の Click イベント ハンドラを使用して WebHierarchicalDataGrid をページングします。

    1. WebHierarchicalDataGrid への参照を取得します。

    2. ドロップダウン リストへの参照を取得します。

    3. インデックスを少なくしてチェックすれば選択可能なページの境界を超えません。

    4. 次ページに移ります。

JavaScript の場合:

var grid = $find("WebHierarchicalDataGrid1");
var parentGrid = grid.get_gridView();
var dropdownlist = document.getElementById("WebHierarchicalDataGrid1_ctl00_ctl01_DropDownList1");
if (parentGrid.get_behaviors().get_paging().get_pageIndex() > 0) {
   parentGrid.get_behaviors().get_paging().set_pageIndex(parentGrid.get_behaviors().get_paging().get_pageIndex() - 1);
}
  1. ページ インデックスを増すことを除き、Next ボタン イベント ハンドラに同じことを行います。

JavaScript の場合:

var grid = $find("WebHierarchicalDataGrid1");
var parentGrid = grid.get_gridView();
var dropdownlist = document.getElementById("WebHierarchicalDataGrid1_ctl00_ctl01_DropDownList1");
if (parentGrid.get_behaviors().get_paging().get_pageIndex() < parentGrid.get_behaviors().get_paging().get_pageCount() - 1) {
   parentGrid.get_behaviors().get_paging().set_pageIndex(parentGrid.get_behaviors().get_paging().get_pageIndex() + 1);
}
  1. ユーザーが手順 5 で追加した WebHierarchicalDataGrid1_PageIndexChanged クライアント側イベントの本文にコードを追加します。

JavaScript の場合:

var grid = $find("WebHierarchicalDataGrid1");
var parentGrid = grid.get_gridView();
var dropdownlist = document.getElementById("WebHierarchicalDataGrid1_ctl00_ctl01_DropDownList1");
dropdownlist.options[parentGrid.get_behaviors().get_paging().get_pageIndex()].selected = true;
  1. アプリケーションを実行します。WebHierarchicalDataGrid のページャーの親バンドは 2 つのボタンとひとつのドロップダウン リストで構成され、それぞれはページングで使用できます。

WebHierarchicalDataGrid Using Custom Paging Template 03.png