PROGRAM VISUALBASIC

ASP.NET(VB.NET) MVCモデル入門~テーブルのヘッダをクリックしてソートする

テーブルのヘッダをクリックしてソートするプログラム

今回は、テーブルのヘッダ部分をクリックすることで、その列をキーにしてソートするプログラムを作ります。
こちらの記事で作成したプログラムに、ソート処理を追加します。
プログラムを実行すると、テーブルのヘッダにソート処理を呼び出すリンクが張られます。

vbmvc13-1

テーブルのモデルにアノテーションを追加

EMPテーブルモデル(Emp.vb)の各プロパティに、アノテーションのDisplayNameを追加します。

データ取得メソッドにソート処理を追加

データベースからデータを取得するGetEmp()メソッドに、ソートする処理を追加します。
Select Case文で、引数で渡されたソートキーを条件に処理を分岐します。
OrderBy()メソッドを使用して、ソートします。
OrderBy()メソッドの使い方は、こちらの記事を参照してください。

コントローラーにソートを呼び出すメソッドを追加

コントローラーに、リンクを押下した時に呼び出されるSort()メソッドを追加します。
Sort()メソッドは、メソッド名と呼び出すビュー名が違うため、Return View()の引数にビュー名(Index)を指定する必要があります。

ActionLink()メソッドを使ってリンクを作成

クリックでソート処理を呼び出すために、HTMLヘルパーのActionLink()メソッドを使います。
ActionLink()メソッドの使い方は、以下の通りです。

Html.ActionLink(リンク文字列, 呼び出すメソッド, (コントローラー名), New With { パラメーター = 値 }(, HTML属性 = 値)

コントローラー名は、ビューに対応するコントローラーであれば省略可能です。
HTML属性には、例えば「New With {.target = "_blank"}」とすると、別ウィンドウに結果が表示されます。
コントローラー名を指定した場合は、HTML属性を省略することはできません。
HTML属性が必要ない場合は、Nothingを指定します。
New Withで指定するパラメーターには、ドット(.)を付ける必要があります。
以下のプログラムでは、リンク文字列をHtml.DisplayNameFor()メソッドから取得していますが、文字列にするためToStringを指定しています。
ActionLink()メソッドの詳しい内容は、以下のマイクロソフトの公式サイトを参照してください。

プログラムの実行結果

プログラムの実行結果は、以下の通りです。
以下の例では、ヘッダの「生年月日」をクリックすると、生年月日順でソートされています。

vbmvc13-4
実行結果

-PROGRAM, VISUALBASIC
-, ,