やったこと
- プロジェクト管理ポートレットで、リスト表示した時に項目名をクリックするとソートできる。ガントチャート表示に切り替えた時にこのソートが引き継がれるようにする。
- clearSessionData を消した
詳しく
- 何かの役に立つかもしれないので残しておきます
- プロジェクトタスクの一覧表示とガントチャートリスト表示はタブで切り替えられるようになっていて、 ProjectGanttChartScreen と ProjectTaskListScreen を見ると、いずれも ProjectTaskSelectData を呼び出している。
- ProjectTaskSelectData ではソートや絞り込みの条件に合わせてSQL文を作り読み込んでいる。
- ソートの条件として、項目名をクリックすると sort と sorttype がパラメータとしてPOSTされ、セッションに保存される。
- ProjectTaskSelectData は ALAbstractMultiFilterSelectData を継承しており、ALAbstractMultiFilterSelectData は ALAbstractSelectData を継承している。ALAbstractSelectData.init() でセッションに保存する。
- ソートの条件として、項目名をクリックすると sort と sorttype がパラメータとしてPOSTされ、セッションに保存される。
- doViewList 内で selectList が呼ばれ、ここで条件のデータを取り出している。詳しく見ると、
sqltemp = Database.sql(EipTProjectTask.class, getFetchQuery(rundata, context));
でSQL文をセット(?)して →214行目、
List<DataRow> result = sqltemp.fetchListAsDataRow();
でSQL文を実行してデータを取り出しているらしい →223行目。
- SQL文は、ProjectTaskSelectData.getFetchQuery で書かれており、ソートの条件はこの関数の中で getOrderBy を呼び出して書いている。ここでセッションに保存された sort と sorttype を呼び出している。
- という訳で、ProjectGanttChartScreen.doOutput内で clearSessionData を呼び出して、保存されていた sort と sorttype を消しているので、ガントチャートリスト表示にした時にソートが引き継がれなかったので、この関数を消せばよい。