0

page1.ascx と page2.ascx という 2 つのページがあるとします。両方のページにコード ビハインド (それぞれ page1.ascx.cs と page2.ascx.cs) があります。

したがって、page1 と page2 はブラウザで同時に並べて表示されます。

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

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

...機能せず、リストボックスのIDを見つけるためのfindControllerはnull値を返します。

どんなガイダンスも大いに役立ちます、ありがとう。

4

2 に答える 2

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

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

p1.PopulateListbox();

独自のイベントを作成する方法のリンクはこちら

于 2012-04-26T09:32:10.273 に答える
0

あるユーザー コントロール メソッドに別のユーザー コントロールから直接アクセスすることは、優れた設計とは思えません。

できることは、page2.ascx にデリゲートを作成することです。このデリゲートは、他のユーザー コントロールで更新アクションを実行する必要があるときに呼び出されます。

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

そのため、ページは両方のユーザー コントロール間の相互作用を調整し、お互いを認識しません。

于 2012-04-26T09:37:43.040 に答える