[英]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.