ASP.NET 徹底活用術のホームへ戻る

■ページングと並べ替え機能を組み込む ~dg3.aspx

 

DataGridにページングと並べ替え機能を追加するには、前出のその2で紹介したサンプルを基にします。その2dg3.aspxにはページング機能が組み込まれていますので、これに並べ替え機能を追加するといった形で進めます。Page_Loadイベントハンドラには、SortExpressプロパティに「CustomerID」を設定するコードを追加します。

 

Private Sub Page_Load(...) Handles MyBase.Load

  DataGrid1.PagerStyle.Visible = False

  If Not IsPostBack Then

    SortExpression = "CustomerID"

    BindDataGrid()

  End If

End Sub

 

BindDataGridメソッドでは、DataTabaleの代わりにDataViewを使用するように書き換えます。また、DataViewSortプロパティに並べ替えるフィールドを設定してから、DataViewDataGridにバインドします。さらに、UpdateColumnHeaderメソッドを追加して、DataGridの列見出しに昇順()/降順()の矢印を表示させます。

 

Sub BindDataGrid()

  Dim strSQL As String = "Select * From Customers"

  Dim strSort As String

  Dim dv As DataView = CreateDataView(strSQL)

  If SortExpression.Length > 0 Then

    strSort = SortExpression

  End If

  If SortOrder.Length > 0 Then

    strSort &= " " & SortOrder

  End If

  dv.Sort = strSort

  UpdateColumnHeader(DataGrid1)

  With DataGrid1

    .DataSource = dv

    .DataBind()

  End With

 ・・・

End Sub

 

最後に、DataGridSortCommandイベントハンドラを追加して、DataGridの列見出しをクリックしたときに列を並べ替える処理を追加します。このイベントハンドラでは、昇順/降順を自動的に切り替えします。

 

Private Sub DataGrid1_SortCommand(...) _

  Handles DataGrid1.SortCommand

  If e.SortExpression = Me.SortExpression Then

    SortOrder = IIf(SortOrder = "DESC", "ASC", "DESC")

  Else

    SortOrder = "ASC"

  End If

  Me.SortExpression = e.SortExpression

  BindDataGrid()

End Sub

 

ページングと並べ替え処理で使用する、UpdateColumnHeaderCreatePageArraySetButtonsMovePageなどのメソッドはDataGridのオブジェクトを参照しますが、直接DataGridIDを参照しないで引数経由で参照するようにします。このように、メソッドを汎用化すると、ページの派生クラスを作成してこれらのメソッドをページ派生クラスに集約させることができます(ページ派生クラスを使用したサンプルは後述します)。

 

Sub UpdateColumnHeader(ByVal dg As DataGrid)

 ・・・

End Sub

 

Function CreatePageArray(ByVal dg As DataGrid) As ArrayList

 ・・・

End Function

 

Sub SetButtons(ByVal dg As DataGrid, _

  ByVal btnFirst As Button, _

  ByVal btnPrev As Button, _

  ByVal btnNext As Button, _

  ByVal btnLast As Button)

 ・・・

End Sub

 

Sub MovePage(ByVal dg As DataGrid, _

  ByVal strDirection As String)

 ・・・

End Sub

 

図6:DataGridにページングと並べ替え機能を追加

 

ASP.NET 徹底活用術のホームへ戻る