2007年8月 9日

GridViewのDataSourceが空の場合にヘッダが表示されない件

 ASP.NET 2.0 でメニーユーズされるGridViewはハイファンクショナリでコンビニエンスだ。

 ・・・ルー語は面倒くさいな。

 便利なのだが、機能が豊富すぎて何をどうしたらよいのか分からなくなることがある。

 今日困ったのは、データが空っぽの場合に何も表示されなくなる点。ヘッダだけ表示してほしい場面は多々あるだろう。

 一応、EmptyDataText というプロパティがある。これを設定しておくと、この文字列だけが表示される。だがボクはHeaderを表示してほしいのだ。

 EmptyDataTemplate というのもある。ここにヘッダ相当の記述を書けば一応は解決する。

 だが、同じことを2回書くのはイヤだ。作成時は問題ないと思うが、修正時にミスる可能性がある。

 失敗する可能性のあるものは、失敗する。

 失敗する可能性は排除しなければならない。


 ググりまくったが「日本語のページを検索」をONにすると解決策が見つからない。外してググったら、複数の掲示板からリンクされているブログを見つけた。どうやらこれが最善策らしい。

 Displaying GridView When No Data Exists

 これはGridViewを継承して、新しくEmptyGridViewという名のコンポーネントを作っている。.aspx での記述例が無いが、

 新しくコンポーネントを作る大げさ感と、EmptyDataTemplate を使って失敗する可能性を盛り込むのとを天秤に掛けて、どちらかを採用しましょう。


 仕様としては、プロパティが2つ増えている。

 ShowEmptyTable は、データが無いときにヘッダだけのTABLEを表示するかのブール値。デフォルトは True なので、通常は指定しなくても問題ない。

 EmptyTableRowText は、空テーブルのヘッダの下に表示するテキスト。

 個人的に不満なのは、フッタに対応していない点。なので対応させた。それとC#からVB.NETに移植した。

 GridViewX.vb.txt


 ところで、「失敗する可能性のあるものは、失敗する」で始まるマーフィーの法則の最新刊、21世紀版 マーフィーの法則が先月発売された。

 信頼性工学の入門書としてお勧めしたい(w

Posted by rukihena at 22:27:33
トラックバックURL

このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/708

コメント