WebHierarchicalDataGrid™ コントロールのページング テンプレート機能で、ページャーのルック アンド フィールをユーザーの仕様にカスタマイズできます。コントロールをテンプレートに追加できますが、ページャー テンプレートの使用では、ページングメカニズムを手動で操作する必要があります。
2 つのボタンとドロップダウン リストを使用して、WebHierarchicalDataGrid の親バンドのページングを設定します。2 つのボタンは前ページと次ページへの移動を処理しますが、ドロップダウン リストは選択したページに移動します。
WebHierarchicalDataGrid を WebHierarchicalDataSource™ コンポーネントにバインドし、Categories および Products テーブルからデータを取得します。この詳細は、 階層的なデータ ソースにバインドトピックを参照してください。
Microsoft® Visual Studio™ [プロパティ] ウィンドウで、 Bands プロパティを指定して、省略記号 (…) ボタンをクリックし、[WebHierarchicalDataGrid バンドの編集] ダイアログを起動します。
親バンドでは、Behaviors プロパティを指定して、省略記号 (…) ボタンをクリックし、[動作エディター] ダイアログを起動します。
この動作を追加して有効にするには、左のリストから ページング の隣りのチェックボックスをチェックします。このトピックでは、PageSize は 3 に設定されます。EnableInheritance プロパティは、子バンドにページングを設定するために有効にできます。
このプロパティで、 PagingClientEvents を展開し、イベント ハンドラ名 WebHierarchicalDataGrid1_PageIndexChanged を入力して PageIndexChanged イベントを処理します。
[適用] そして [OK] ボタンをクリックしてエディターを閉じます。
WebHierarchicalDataGrid を右クリックして編集テンプレートを強調表示します。ページャー テンプレートのオプションが表示されます。
注: 複数の動作テンプレートを使用している場合、編集テンプレートのサブメニューのセクションとして動作テンプレートが表示されます。
コンテキスト メニューからページャー テンプレートを選択します。WebHierarchicalDataGrid 表示は、テンプレート編集表示に変わります。
注: 追加した動作に基づき、ページャー テンプレートに加えて他のテンプレートが表示されます。
2 つの HTML ボタンとひとつの ASP.NET DropDownList コントロールをテンプレートに追加します。
2 つのボタンの間にドロップダウン リストを配置します。
ドロップダウンリストの前のボタンの値を「前へ」に設定し、その ID を PrevButton に設定します。
2 番目のボタンの値を「次へ」に設定し、その ID を NextButton に設定します。
各ボタンをダブルクリックしてそれらにイベント ハンドラを追加します。
ドロップダウン リストに IndexChanged という名前のクライアント側のハンドラを追加します。ドロップダウンから値を選択する場合、これは WebHierarchicalDataGrid の手動ページングを処理します。ドロップダウン リストの HTML は以下のように表示されるはずです:
HTML の場合:
<asp:DropDownList ID="DropDownList1" runat="server" onchange="return IndexChanged()"> </asp:DropDownList>
WebHierarchicalDataGrid を再び右クリックして、[テンプレート編集の終了] を選択します。通常のグリッド表示に戻ります。 .
WebHierarchicalDataGrid コントロールの RowIslandDataBinding イベントでデータのページ数で DropDownList コントロールを生成します。
ページャー テンプレートでドロップダウン リストへの参照を取得します。これはテンプレート内のコントロールのコンテナである PagerTemplateContainer へのアクセスと、テンプレート内のコントロールを見つける必要があります。
ページ数でドロップダウン リストを生成します。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());
}
}
}
}
ドロップダウン リストの IndexChanged イベント ハンドラで WebHierarchicalDataGrid を手動でページングします。
WebHierarchicalDataGrid への参照を取得します。
ドロップダウン リストから選択した値に基づき 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);
}
Prev ボタン コントロールのクライアント側の Click イベント ハンドラを使用して WebHierarchicalDataGrid をページングします。
WebHierarchicalDataGrid への参照を取得します。
ドロップダウン リストへの参照を取得します。
インデックスを少なくしてチェックすれば選択可能なページの境界を超えません。
次ページに移ります。
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);
}
ページ インデックスを増すことを除き、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);
}
ユーザーが手順 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;
アプリケーションを実行します。WebHierarchicalDataGrid のページャーの親バンドは 2 つのボタンとひとつのドロップダウン リストで構成され、それぞれはページングで使用できます。