2012-03-30 13 views
0

私はこの質問で指定されたのとほぼ同じ問題が発生しています。誰でもこの回答を投稿できますか?問題は明らかに答えられていません。この前述の問題のC# - 動的にロードするユーザーコントロールのボタンクリック

Issue with dynamically loading a user control on button click

、彼は最初のユーザーコントロールに存在するプレースホルダにコントロールをロードしています。私のシナリオは少し異なります。私のシナリオでは、私は単一のaspxページ、UserControl1とUserControl2を持っています。私はUserControl1をページにロードします。 UserControl1からボタンをクリックすると、UserControl1をアンロードしてUserControl2をPageにロードする必要があります。

+0

何まさにあなたは理解していないのですか?何を試しましたか? – walther

+0

@walther - マークされた答えで、 '〜/ UserCtrl2.ascx'がButton1_Click()イベントからPlaceHolder2を追加しています。しかし、PlaceHolder2はDefault.aspxにあり、Button1はUserCtrl1.ascxにあります。 SecondControlLoaded viewstateはDefault.aspx.csと関連付けられています。しかしそこには、UserCtrl1.ascx.csにリンクされています。そして、マークされた答えのKumarのコメントをご覧ください。あなたは完全なコードを投稿することができた場合に、「あなたは私がSecondControlLoadedは、ビューステートにする値を保存UserCtrl1におけるブール値プロパティであることを推測しています?完全なコードを投稿してくださいすることができます...」それは本当に参考になります。 – mlg

答えて

0

あなたはボタンがクリックされたときにUserControl1バブルページにアップイベントのカスタムイベントハンドラを作成する必要があります。 を見てみましょう。

UserControl1のカスタムイベントハンドラを作成します。

public event EventHandler UpdateButtonClick; 

public void OnUpdateButtonClick(EventArgs e) 
{ 
    if (UpdateButtonClick!= null) 
     UpdateButtonClick(this, e); 
} 

UserControl1のイベントハンドラを割り当てます。

<uc:UserControl1 ID="UserControl1" runat="server" 
    OnUpdateButtonClick="UserControl1_UpdateButtonClick" ... /> 

は、コードビハインドでイベントを処理します:

protected void UserControl1_UpdateButtonClick(object sender, EventArgs e) 
{ 
    UserControl1.Visible = false; 
    UserControl2.Visible = true; 
} 
+0

ありがとう@james。私はこのコードを試し、あなたに知らせるでしょう。 – mlg

+0

非常に遅れて返信して申し訳ありません。しかし、私はまだ、ページの負荷のすべてのユーザーコントロールを読み込む必要がありますか? – mlg

+0

はい、動的に読み込むこともできます。しかし、私は 'Page_Load'の代わりに' OnInit'をオーバーライドし、そこのcontrolsコレクションに追加します。 –

関連する問題