WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

ControlCollection 中の Control の取得

by WebSurfer 26. July 2010 20:51

ASP.NET に関して、MSDN フォーラムに投稿した内容を中心に、今後役に立ちそうなことを備忘録的にまとめてみようと思います。これが第一回目です。

デザイン画面で、例えば ItemTemplate に Button を一つだけドラッグ&ドロップした場合、その Cell の ControlCollection の中で Button は何番目の Control になると思いますか?

Button 一つしか配置していなのだから 1 番目と思うと大違いで、答えは 2 番目なんです。理由は以下のとおりです。

デザイン画面で ItemTemplate を追加して、それに Button をドラッグ&ドロップすると、自動的に改行とインデントが追加されます。ソース画面で見ると以下のようになります。

<ItemTemplate>
    <asp:Button ID="Button1" runat="server" Text="Button" />
</ItemTemplate>

その改行とインデントが LiteralContorol として Button の前後に追加され、Button は ControlCollection の中で 2 番目になるというわけです。

ちなみに、ソース画面で、改行とインデントを削除すると 1 番目になります。

そういうわけで、ControlCollection 中のオブジェクトを取得するのに、Control.Controls[x] のように順番に頼るのは危険で、FindControl メソッドを使うのが正解のようです。

Tags:

ASP.NET

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  September 2020  >>
MoTuWeThFrSaSu
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar