2012-04-26 3 views
0

私はtvoページ、page1.ascxとpage2.ascxを持っているとします。どちらのページにもコードビハインドがあります(それぞれpage1.ascx.csとpage2.ascx.cs)。異なるコードビハインドからascxコンテンツを変更する

したがって、ページ1とページ2はブラウザで同時に表示されます。

今、page1.ascxにはListViewがあり、そのコードビハインドにはPopulateListbox()を設定するメソッドがあります。 page2.ascxコードビハインドからPopulateListbox()を呼び出すにはどうすればよいですか?

page1 p1 = new page1(); 
p1.PopulateListbox(); 

...は動作しません。リストボックスのIDを見つけるfindControllerはnull値を返します。

どのようなガイダンスも大変助けになります。ありがとうございます。

+0

PopulateListbox()がpublicかどうかを確認してください。 – userGS

答えて

2
var p1 = this.Page.FindControl("page1Id") as page1; 
if (p1 != null) 
    p1.PopulateListbox(); 

これは別の方法で行うこともできます。最初のコントロールに特定のアクションのイベントを作成します。親ページでは、イベントハンドラを追加し、そのイベントハンドラは次の呼び出し

p1.PopulateListbox(); 

Here「別のユーザーコントロールから直接、1人のユーザ制御方法をdoesnのアクセス、独自のイベント

+1

最初の例では、p1は常にnullです。私はイベントハンドラを試してみるつもりです。 – hallizh

+0

あなたは適切なIDを使用していますか? –

+1

はい、少なくとも私はそうだったと思います。とにかく、イベントの実装はこれを実装するためにはるかにクリーンな方法だと思います。ありがとうございました! – hallizh

0

を作成する方法についてのリンクが含まれています素晴らしいデザインのような音。

他のユーザーコントロールのリフレッシュアクションが発生する必要があるときに呼び出される、delegateをpage2.ascxに作成することができます。

あなたのaspxページはそのデリゲートにサブスクライブし、page1.ascx PopulateListBoxメソッドを呼び出します。

したがって、あなたのページは両方のユーザーコントロール間のやり取りを調整し、お互いを知りません。

関連する問題