GJAX IS UNDER CONSTRUCTION! (※日本語ブログ)

Please wait a minute for GJAX/2008

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  171  : 記事  0  : コメント  392  : トラックバック  50

ニュース

今後のスケジュールについて

予定なし

インフォメーション

わんくま同盟メンバ ブログ トップ

ブログタイトル(July 2007~)
GSP.NET GJAX!
【読み方:じーえすぴーどっとねっと/じーじゃっくす】
【サブ:~ A C# programmer dives into ASP.NET! ~】

ASP.NET AJAXと違って、GSP.NET [ghost_shell's (web) pages & .NET]の部分が正式名称、GJAX!の部分が省略形・俗語となっています。

過去のブログタイトル
【表記:ウェブ100】
【読み方:うぇっぶいちまるまる】
【サブ:.Net & Webに てん ぜろ】

書庫

日記カテゴリ

Webユーザーコントロール(以下、ユーザーコントロール)を他のユーザーコントロールやWebフォームに追加するには

  1. 追加される側をデザイン状態(ソースはNG)で開いておいてから、ソリューションエクスプローラから追加するユーザーコントロール(***.ascx)を追加したい場所にドラッグ&ドロップします。

たった1ステップ行うだけです。


続いて、動的にコントロールを追加するには

※ マイクロソフトのKB(Knowledge Base)の方が確実なので、以下のリンクをご覧ください。

[HOWTO] Visual C# .NET を使用して ASP.NET で動的にコントロールを作成する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;317794

重要なのは、オーバーライドしたOnInitに(あるいは以下の例のようにPage_Initを追加した中に)コンストラクトしたコントロールをControlsプロパティにAddすることです。

protected void Page_Init(object sender, EventArgs e)
{
    Button button = new Button();
    button.ID = "Button1";
    button.Text = "Button1";
    this.Controls.Add(button);
}


最後に本題の、動的にユーザーコントロールを追加するには

先程のやり方を真似てユーザーコントロールの型をnewしてAddしてもうまくいきません。
追加するユーザーコントロールで動的にコントロールを追加していた場合は、そのことが反映されています。

UserControlHoge ucHoge = new UserControlHoge();
this.Controls.Add(ucHoge);


では、動的に追加されるユーザコントロールは.ascxファイルを既定のまま何も加えず、全てのコントロールを初期化時に追加しなければならないのでしょうか。
これではVisualな開発(デザイン画面での開発)ができません。

ご安心ください。方法は用意されています。
コンストラクタの部分を以下のように書き換えるだけです。

UserControlHoge ucHoge = (UserControlHoge)LoadControl("~/UserControlHoge.ascx");
this.Controls.Add(ucHoge);


LoadControlメソッドはPageクラスとUserControlクラスの基底クラスであるSystem.Web.UI.TemplateControlクラスのメソッドです。

TemplateControl.LoadControl メソッド (MSDNライブラリ)
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.templatecontrol.loadcontrol.aspx


以上で終わります。

~ 参考にしたページ ~

ユーザコントロール (ASP.NET) を動的に作成 - アジャイルプログラマの日常
http://d.hatena.ne.jp/fyts/20071019/usercontrol


(Posted Date) 20:20 LoadControlメソッドについて補足

(Posted Date) 20:30 タイトルを修正

投稿日時 : 2008年1月17日 18:32

コメント

# re: ASP.NET Webユーザーコントロールを動的に追加するには 2008/01/17 19:16 いしだ
こりゃ、いいことききました。
動的にユーザーコントロールを、ってのはまだやった事なかったですが、
必要になった時にはまり回避できました。
howmに保存しておきました。

# re: ASP.NET Webユーザーコントロールを動的に追加するには 2008/01/17 20:00 ghost_shell
お役に立てて(まだ立っていないか・・・)よかったです。

"~/PageHoge.aspx"のようなパスを表す文字列を渡すメソッドとして Response.Redirect と Server.Transfer が思い浮かんだのですが、このメソッドを見た瞬間に軽く衝撃を受けました。

Post Feedback

タイトル
名前
Url:
コメント: