検索結果一覧の初期ソートルールを指定します。

図1は、顧客モデルの一覧表示画面において「氏名」「氏名かな」「電子メール」の3つの項目をソートキーと指定した例です。

画面表示時は、第一ソートキーで並びます。(この例ではアルファベット降順としています。)

図1 ソートキーを指定した一覧表示画面

ソートキーと指定した項目は、項目名部分をクリックできます。クリックするとその項目でソートが行われます。同じ項目をクリックすると、ソート順を反転させることができます。

図2は電子メール項目をアルファベット昇順ソートに切り替えた例です。

図2 電子メール項目の昇順ソートに切り替えた

ソートキーは記憶されます

ソートキーは画面ごと、かつ、利用者ごとに記憶されます。利用を終了し、再びログオンすると、最後に指定したソートキーで並び替えられた一覧画面が表示されます。

ソートキーを初期化する

検索画面で「検索条件のクリア」を行うと、再検索と同時に初期ソート順に戻ります。

サンプルで用いた顧客モデルの定義を図3に示します。ここでは「氏名」「氏名かな」「電子メール」の3つの項目にソートキーを設定します。

図3 顧客モデルの定義

モデル項目詳細定義を開きます。各項目の「ソート順」という欄に数字を指定します。数字の若い順に第一ソートキー、第二ソートキー... と割り当てられます。(図4,図5,図6)

数値の前に「マイナス」を指定すると、初期ソートルールが逆順ソートとなります。(図4の「電子メール」項目)

図4 「電子メール」項目を第一ソートキーかつ逆順とする
図5 「氏名かな」項目を第二ソートキーとする
図6 「氏名」項目を第三ソートキーとする

ソートはデータベースの SQL 処理 (ORDER BY 句) によって実現しています。 そのため、データベースによってルールが変わります。

データベースに保存しない項目はソートキーに指定できません

ソートはデータベースの ORDER BY 句によって実現しています。そのため、データベースに保存しない項目はソートキーとして指定することはできません。

一般的なルール

  • 数値、日付型は昇順。
  • アルファベットについては、A,B,C... 順。
  • 日本語文字については、そのデータベースを作成した文字コード順。(文字コードの確認および定義方法についてはデータベースのドキュメントをご確認ください。)
日本語文字でのソートは、利用者が期待した並びにならないことがあります。これは文化的な並びではなく、文字コード順となるためです。

NULL 値のソート

値が "NULL" のソートは、データベースによって扱いが異なります。

  • SQL Server, MySQL では、最も小さい値として扱われます。
  • Oracle, DB2, PostgreSQL では、最も大きい値として扱われます。(Oralce 9i 以降では、NULL の扱いを指定することもできます。)
  • 内臓データベース (HSQLDB) では、ソート対象となりません。NULLを含む行が常に先頭になります。

モデル参照項目のソート

モデル参照項目をソート対象とすることは非推奨です。

その理由は、モデル参照項目は "ID値" でソートするためです。多くの場合、表示されている内容と、ソートの並びが一致しないという印象を受けることになります。

モデル参照(参照連動)項目のソート

参照連動項目が自モデル保存となっている必要があります。

外部キー関係における子モデル部の表示

主キーの扱い

主キーは必ずソートキーに含まれます。

ページネーション機能を実現するために、order by 句に主キーを指定する必要があります。
Wagby Developer Day 2017