首页 / 知识

关于c#:刷新页面上的所有更新面板?

2023-04-14 21:38:00

关于c#:刷新页面上的所有更新面板?

Refresh all update panels on the page?

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

这可能吗?

编辑:

为澄清起见,我在一个用户控件中有一个更新面板,其他更新面板在其他用户控件中,因此除非我要公开一些自定义属性并使用findControl等,否则它们将彼此看不见。 。

再次编辑:

这是我想出的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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投射到当前页面中并称为Update。

编辑:

AARRGGGG!

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


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

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


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


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

例如,您可以跳过需要"中产阶级"来完成其工作的内容;在您的主要语言中,您可以拥有;

1
2
3
4
5
6
PresenterClass.AttachInterface(mIOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(1);
PresenterClass.AttachInterface(mIOtherOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(2);

每个视图将具有其自己的控件。您可以使用许多不同的方法来执行此操作。或者,您可以使用中产阶级来实例化两个面板,然后在每个面板中都可以使用"获取方法"来检索要处理的数据。


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


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


刷新页面绑定用户控件事件

最新内容

相关内容

猜你喜欢