【Web開発】新館「花と植物の写真館」でNEW表示をはじめてみた(1)

私のWebサイト「なおさん亭::新館」にて、「花と植物の写真館」で新しくアップされた写真がわかるようにしてみました。

Flower_new_01

トップページに表示される更新情報で、「○○の写真が追加されました。」とか出ても、どこを見たらいいかわからねぇじゃん!という声に応えてのものです(あればですけど)。まぁ、自分で見ていても、写真を登録しても見た目が変わらないので、ちょっと寂しいなと思っていました。

登録後、一週間以内の写真、名前、科名、○行という表示にはNEWが赤字で出てきます。

Flower_new_02

ということでNEW表示ですが、あれば便利ですけど、実際に付けるのはけっこう大変です。写真の管理にはデータベースを使っていますから、登録後一週間以内の写真だけ取り出し、その情報(名前とか)に従って該当する部分にNEWを付けてやればいいのですが、ここも結局応答速度の問題が立ちふさがります。

以前、こんな記事を書きました。

【Web開発】「新館―花と植物の写真館」を高速化する

階層構造を持ったメニューの場合、クエリが重層化して非常に処理が重たくなります。しかも、日々刻々とデータベースが更新されるわけでもないので、静的なデータを持っておき、それをそのままメニューに登録してやれば高速化できるという主旨の記事です。

静的なデータとはXMLファイルであり、これなら一発でロードできます。XMLファイルの更新はデータベースの更新に合わせればよく、クエリの結果をいかにXMLとして書き出すか、.NETにおけるDOMの使い方の記事でもありました。

これはつまり、メニューの内容はすでにXMLで用意されているので、画面のようにNEWを後から入れるには、それなりの工夫が必要というわけです。NEW自体はGIFファイルなので、画像として入れてやればいいのですが、ちょうどTreeNodeコントロールにはImageUrlというプロパティがあり、そこに画像へのURLを入れてやれば画面のように画像を表示できます。ImageUrlプロパティの本来の使い方とは違うようですが、まぁ目的は果たしてくれます。

では、ImageUrlプロパティを書き換えるTreeNodeオブジェクトをどのように知ればよいか?ここで、以前に書いた記事が役に立ちます。

【プログラミング】【ASP.NET】TreeViewコントロールのFindNodeメソッドの使いこなし

この記事は、TreeViewコントロールのFindNodeメソッドを使って、TreeNodeオブジェクトを探す、というものでした。要は、値パスをリスト化しておき、そのリストに従ってTreeViewコントロールを検索し、見つかったTreeNodeオブジェクトのImageUrlプロパティを書き換えてやる、ということをすればよさそうです。

ということで紙面が尽きてしまいました。後半は、明日に書きます。お楽しみに。

コメント