从不同的代码隐藏更改ascx内容

时间:2012-04-26 09:28:42

标签: c# javascript asp.net .net webforms

说我有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返回空值。

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

2 个答案:

答案 0 :(得分:2)

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

你可以用不同的方式做到这一点。在第一个控件上为特定操作创建一个事件。在父页面中添加一个事件处理程序,该事件处理程序将包含以下调用

p1.PopulateListbox();

Here有关如何创建自己的活动的链接

答案 1 :(得分:0)

直接从另一个用户控件访问一个用户控制方法听起来不是一个好的设计。

您可以做的是在page2.ascx中创建一个代理,当您需要在其他用户控件中执行刷新操作时,该代理会被调用。

您的aspx页面订阅该委托并调用page1.ascx PopulateListBox方法。

因此,您的页面会协调两个用户控件之间的交互,并且彼此不了解。