UpdatePanel.Update()方法的事件处理程序

时间:2011-10-28 08:10:40

标签: c# asp.net ajax jquery updatepanel

我的网络表单中有两个UpdatePanel。两个UpdateMode="Conditional"。 UpdatePanel1中的异步触发器触发UpdatePanel2.Update()事件。

我想在UpdatePanel2中每当他的update()方法被触发时,做一些事情(比如根据某些标准动态加载一些用户控件)。

我该怎么做?

编辑: 这是我需要的简化版本。 UpdatePanel2.Update()方法可以从MasterPage和...等所有地方触发。 doing some stuff不只是加载用户控件

2 个答案:

答案 0 :(得分:1)

检查此答案:How to know which UpdatePanel causes the partial PostBack?

此外,您可以使用此类方法,而无需使用反射继承现有的UpdatePanel控件:

private static PropertyInfo RequiresUpdateProperty;

protected void Page_Init(object sender, EventArgs e)
{
    RequiresUpdateProperty = RequiresUpdateProperty?? typeof(UpdatePanel).GetProperty("RequiresUpdate", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
}

protected void Page_PreRender(object sender, EventArgs e)
{
    if ((bool)RequiresUpdateProperty.GetValue(UpdatePanel2, null))
    {
        // gotcha!
    }
}

当您设置由UpdatePanel的子控件引起的条件UpdateMode和回发时,请注意RequiresUpdate proeprty返回false,该子控件未添加到Triggers集合。

P.S。上面的代码需要FullTrust代码访问安全级别,因为它使用反射

答案 1 :(得分:0)

你已经回答了你的问题。您将决定updatepanel2何时更新,以便您指定代码以动态添加控件。至于事件,框架不提供为每个updatepanel更新启动的事件:)。

实施例

UpdatePanel2.Update();

因为您在此声明之前调用了更新,所以您将添加所有控件,如下所示

TextBox tbox = new TextBox();
tBox.ID = "txtbox1";
UpdatePanel2.Controls.Add(tBox);
UpdatePanel2.Update();