C# 是否刷新页面上的所有更新面板?

C# 是否刷新页面上的所有更新面板?,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,我有一些代码修改其他更新面板中的几个控件绑定到的值。当这个事件处理程序启动时,我希望它也强制其他更新面板刷新,以便它们可以重新绑定 这可能吗 编辑: 为了澄清,我在一个用户控件中有一个更新面板,其他更新面板在其他用户控件中,因此它们无法看到彼此,除非我公开一些自定义属性并使用findControl等 再次编辑: 以下是我的想法: public void Update() { recursiveUpdate(this); } private void recursiveUpdate(C

我有一些代码修改其他更新面板中的几个控件绑定到的值。当这个事件处理程序启动时,我希望它也强制其他更新面板刷新,以便它们可以重新绑定

这可能吗

编辑:

为了澄清,我在一个用户控件中有一个更新面板,其他更新面板在其他用户控件中,因此它们无法看到彼此,除非我公开一些自定义属性并使用findControl等

再次编辑:

以下是我的想法:

public void Update()
{
    recursiveUpdate(this); 
}

private void recursiveUpdate(Control control)
{
    foreach (Control c in control.Controls)
    {
        if (c is UpdatePanel)
        {
            ((UpdatePanel)c).Update();
        }

        if (c.HasControls())
        {
            recursiveUpdate(c);
        }
    }
}
我有三个主要的用户控件,它们都是更新面板,这些控件在主页上是可见的,所以我在那里添加了一个更新方法,在这三个控件上调用update

在我的触发控件中,我只是将这个.Page转换到currentpage中,并调用Update

编辑:

阿尔格


当更新面板刷新时,它不会在其中的子控件内调用页面加载…我现在该怎么办

您可以在更新面板中设置要更新的事件的触发器,也可以在代码隐藏中显式地说updatepanel.update()。

注册一个PostBackTrigger(而不是AsyncPostBackTrigger)怎么样?当特定事件触发时,它将刷新每个面板


或者将已经刷新某些updatepanel的触发器也添加到其他updatepanel。

如果您想从中刷新updatepanel,这是一项很好的技术。

Page.DataBind()在所有子控件上启动一轮数据绑定。这将导致Asp.Net重新计算每个控件上的绑定表达式。如果这还不够,您可以添加任何逻辑,以确保启动usercontrols中的OnDataBinding或OnDataBinding重写。例如,如果需要重新执行Page_Load事件,只需在重写的OnDataBound方法中调用它。

将两个视图面板实例化为第三个presenter类,然后让presenter类控制两个视图。例如:

你可以忽略你所需要的“中产阶级”来完成它的工作,例如,在你的主要工作中你可以拥有的

PresenterClass.AttachInterface(mIOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(1);
PresenterClass.AttachInterface(mIOtherOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(2);
每个视图都有自己的控件。有很多不同的方法可以做到这一点。。或者,你可以使用中产阶级来实例化两个面板,然后在每个面板中,你可以使用“get方法”来检索数据进行处理