SiteConfig has all customizations Please read my disclaimer.

BUG じゃないけど「ドジ」発見

 ASP.NET には、Repeater という便利な Web Control がある。 あるものは使わなくちゃ、というので使ってみた。 このコントロールをネストしようとして、ちょっとやっかいなことになった。(笑) で、無事ネストして使えるようになって喜んでいたけれど、別の部分のデバッグ中に「ドジ」を発見してしまった。
<asp:Repeater ID="RepeaterMain" runat="server">
<ItemTemplate>
<asp:Repeater ID="RepeaterImage" DataSource='<%# GetImageArray() %>'
          runat="server">
<ItemTemplate>
<%# Container.DataItem %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</pre>
 ここで DataSource= の部分に、System.Collections.IEnumerable または IListSource インターフェイスを実装するオブジェクトを指定するわけだが、データアクセスをして、結果を入れた配列を戻す関数を指定していた。 当然動作はするが、上の階層の Repeater の ItemTemplate ループが回る回数分データアクセスが発生する。

 まったくドジだね。 RepeaterMain.DataBind(); する前に 配列を取得しておき、DataSource= には、その配列を渡してあげるだけにして、たぶん、問題は解決? いや、問題はなかった???(汗) 動いているので、デバッグしないと気がつかない...

04/13/2008 12:13 PM | Comments[2] | #報告

04/13/2008 5:2 PM

こんにちは、Blogに画像をUPする部分ですか、
結果OKと無駄なループの発見ですね、大規模になれば成る程発見しずらい現象ですね

スー

04/13/2008 5:41 PM

スーさん、こんにちは。 Blogのシステムは何日か前に、基本的な部分は作り終えています。 いまやっているのは、自分で書き込んだ部分の編集をする機能の実装。 画像を一個一個削除、追加したり、そのたびにプレビューをさせたり...本質的ではないところなんです。 やりだしたら切りがないないですねぇ。

本人

Content c 2006 YUKKKI | Subscribe to my feed.

Powered by BlogX