2010-04-27 29 views
1

我有一个场景,我动态加载2个用户控件在网络表单中,并需要它们一起交互。这里的代码:2动态加载之间传递数据用户控件

default.aspx.cs 
ControlA cA = (ControlA)LoadControl("~/controlA.ascx"); 
ControlB cB = (ControlB)LoadControl("~/controlB.ascx"); 
Page.Controls.Add(cA); 
Page.Controls.Add(cB); 

现在的事情是,controlB需要传递一个数据到controlA。数据不是来自事件(好的一部分)。当用户点击来自controlB的链接时,我们从数据库获取数据,而我需要传递给controlA的是从请求中获取第一个数据的ID。当然,当用户点击controlB中的链接时,页面会做回发。

我看着活动&代表,但我无法让它工作。这是正确的路吗?

如果有人可以有线索,这将非常感激!

回答

1

想到的一个快速而脏的方法是声明第一次获取数据的ID作为ControlB的公共属性,并在您的链接回发的处理程序上设置该值,例如controlB 。 在ControlB的事件处理程序:

public void Link_click(object sender, EventArgs e) 
{ 
this.FirstFetchedId = GetValueFromDB(); 
} 

然后在ControlA的预渲染:

protected override void OnPreRender(EventArgs e) 
{ 
ControlB cB = this.Page.FindControl("ControlBId") as ControlB; // either by ID or loop trough controls to find it by type 
var YourIdIsHere = cB.FirstFetchedId; 
base.OnPreRender(e); 
} 
+0

由于拉杜,我给它一个尝试,似乎对我好! – MissRaphie 2010-04-29 04:42:13

+0

没有工作... – MissRaphie 2010-04-29 14:32:10

+0

什么部分没有工作? – Radu094 2010-04-30 13:07:36