0

假设我有 tvo 页面 page1.ascx 和 page2.ascx。两个页面都有代码隐藏(分别为 page1.ascx.cs 和 page2.ascx.cs)。

因此 page1 和 page2 在浏览器中同时呈现,并排。

现在 page1.ascx 有一个 ListView,它的代码隐藏有一个填充它的方法(PopulateListbox())。如何从 page2.ascx 代码隐藏中调用 PopulateListbox()?

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

...不起作用,并且 findController 查找列表框的 ID 返回一个空值。

任何指导都会有很大帮助,谢谢。

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 回答