色々とASP.NETを研究していて感じた点をメモしておきます。
- グリッド内編集は極力避ける
- 画面は極力小分けにする
まず一点目について。
GridViewを使った更新は、更新衝突などを考慮しない簡単な更新シナリオを実現するのには便利です。
しかし、色々と凝ったロジックを組み込もうとすればするほど、標準の挙動では満足できなくなり、GridViewをHackする必要が出てきます。
結果、ネットを探し回り大量の時間を割いてようやく目的のプロパティが見つかったり、そうでなければトリッキーなカスタムコードをあちこちに組み込んだりする必要が出てきます。
運よくプロパティが見つかった場合はコードが減りますが、今度は第三者にはどこでそんな動きを実現しているのかが分かりにくくなってしまいます。
よって、GridViewを使った更新はScaffold的な簡易用途や本当にそれが必要な場面に限定するのがベターだと思いました。
更新は無理にGrid内で実現せず、詳細ページに遷移してから一件ずつ更新するほうがまだマシだと思います。
続いて2点目について。
検索画面と一覧表示画面とGrid内編集が同居したような画面設計は避けるべきです。
一見便利そうに見えますが、一つの画面内に複数の異なる機能を持たせようとすると、予期せぬ問題が勃発しやすくなります。
たとえば、Gridが編集モードになっている際に検索条件のドロップダウンリストが変更されてPostBackが発生した際に、編集中のGrid行が真っ白になる、といった変な挙動が発生しました。
こうした挙動に出来るだけ遭遇しないように、異なる機能は異なる画面に分けるほうがベターです。
どちらの問題も時間をかければ解決できなくはないのですが、その要件が絶対的なものではない限り、避けたほうが開発工数を節約できると思います。