我有一个在同一页面上使用过两次的用户控件,每个都有能力更新(下拉列表获取一个新项目),我不知道什么是处理这个问题的最佳方法。
一个问题 - 这是一个较旧的系统(~4 +年,数据集,.net2),它非常脆弱。我确实设法让它在3.5上运行没有任何问题,但是当我更改/添加/修改控件时,我已经有一些javascript验证(每页约300行)的试运行。父节点。
答案 0 :(得分:2)
向您的用户控件添加一个事件。
public event EventHandler MyEvent;
protected void OnMyEvent(EventArgs e)
{
if(MyEvent != null)
{
MyEvent(this, e);
}
}
protected void AddOptionAdded(object sender, EventArgs e)
{
OnMyEvent(EventArgs.Empty);
}
然后在您的页面中,您可以订阅两个控件事件。
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1.MyEvent += OnMyEventHander;
WebUserControl2.MyEvent += OnMyEventHander;
}
protected void OnMyEventHandler(object sender, EventArgs e)
{
// Notify the other controls that something changed.
}
然后在页面的事件处理程序中,您可以执行更新其他控件所需的任何操作。调用方法等
您还可以创建自己的委托和EventArgs类,以传递可能需要的其他自定义数据。
答案 1 :(得分:0)
甚至不需要大部分,我忘了提到它是vb,所以我把它放在用户控件中......
Public Event UpdateListings As EventHandler
Public Function SomethingToDo
'doing some cool stuff ...not really
RaiseEvent UpdateListings(Me, EventArgs.Empty)
Return result
End Function
然后在父页面上的代码
Protected Sub UpdateStuff(ByVal sender As Object, ByVal e As EventArgs) Handles userControl1.UpdateListings, userControl2.UpdateListings
userControl1.BindStuff()
userControl2.BindStuff()
End Sub