2012-04-20 11 views
3

私は事前にユーザーのコントロールを読み込むASPXページを持っています。動的に読み込まれるWebユーザーコントロールへの値の転送

control = "~/templates/" + which + "/master.ascx"; 

はその後pageloadに、私は私がASCXするASPXから、動的にロードされたユーザーコントロールを転送することができますどのように制御

Control userControl = Page.LoadControl(control); 
Page.Controls.Add(userControl); 

ことを読み込みますか?

答えて

5

あなたがで実装されたインタフェースを作成することができますすべてのカスタムコントロール。この方法で、そのインターフェイスにキャストし、それを使ってデータを渡すことができます。この例を考えてみましょう:

public interface ICustomControl 
{ 
    string SomeProperty { get; set; } 
} 

...そして、あなたのコントロール:

public class Control1 : Control, ICustomControl 
{ 
    public string SomeProperty 
    { 
     get { return someControl.Text; } 
     set { someControl.Text = value; } 
    } 

    // ... 
} 

を今、あなたはこのような何かを行うことができます。

Control userControl = Page.LoadControl(control); 
Page.Controls.Add(userControl); 

if (userControl is ICustomControl) 
{ 
    ICustomControl customControl = userControl as ICustomControl; 
    customControl.SomeProperty = "Hello, world!"; 
} 
+0

完璧! :) どうも –

0

Page.Findcontrol(...)を使用すると、親ページのコントロールを取得できます。

は、以下を参照してください。http://msdn.microsoft.com/en-us/library/31hxzsdw.aspx

ちょうどあなたがそれにアクセスできるようにあなたは、コード内のIDを設定してください。同様に:あなたのコントロールのクラスタイプで

Control userControl = Page.LoadControl(control); 
userControl.ID = "ctlName"; 
Page.Controls.Add(userControl); 
0

キャスト(あなたがコントロールにデータを転送する場合)、あなたがコントロールのパブリックプロパティを作成する必要が

var userControl = (master)Page.LoadControl(control); 

userControl.yourpublicproperty ="some text"; 

Page.Controls.Add(userControl); 
関連する問題