繁体   English   中英

刷新页面上的所有更新面板?

[英]Refresh all update panels on the page?

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

这可能吗?

编辑:

为了澄清,我在一个用户控件中有一个更新面板,其他更新面板在其他用户控件中,因此除非我公开一些自定义属性并使用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);
        }
    }
}

我有3个主要用户控件,其中包含更新面板,这些控件对主页可见,因此我在那里添加了一个名为Update的Update方法。

在我的触发控件中,我只是将this.Page转换为currentpage并调用Update。

编辑:

AARRGGGG!

更新面板刷新时,它不会在其中的子控件内调用Page_Load ...我现在该怎么办!

如何注册一个PostBackTrigger(而不是AsyncPostBackTrigger),它会在特定事件触发时刷新每个面板。

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

您可以在要更新的更新面板中的事件上设置触发器,也可以在后面的代码中明确说出updatepanel.update()。

将两个视图面板即时连接到第三个演示者类,然后让演示者类控制两个视图。 例如:

你可以通过你需要的“中产阶级”来完成它的工作,例如,你可以拥有的主要工作;

PresenterClass.AttachInterface(mIOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(1);
PresenterClass.AttachInterface(mIOtherOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(2);

每个视图都有自己的控件。 这么多不同的方法你可以做到这一点..交替地你可以使用中产阶级来快速完成你的面板,然后在每个面板中你可以“获取方法”来检索数据以进行处理。

如果您想从客户端Javascript刷新updatepanel,这是一个很好的技术。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM