2010-05-14 30 views
0

我有一个用户控件在同一页面上使用两次,每个都有能力更新(下拉列表获取一个新项目),我'我不知道什么可能是处理这个问题的最好方法。两个UserControls,一个页面,需要通知对方的更新

一个问题 - 这是一个较旧的系统(~4 +年,数据集,.net2),它非常脆弱。我确实设法让它在3.5上运行,没有任何问题,但是当我更改/添加/修改控件的时候,我已经在javascript验证(每页约300行)家长。

回答

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 
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类来传递可能需要的其他自定义数据。

+0

好吧,没有工作,看到我的“答案”我自己的问题(我试图发布的东西评论...格式化失败) – jeriley 2010-05-17 16:41:14

相关问题