我的网络表单中有两个UpdatePanel。两个UpdateMode="Conditional"
。 UpdatePanel1中的异步触发器触发UpdatePanel2.Update()
事件。
我想在UpdatePanel2中每当他的update()方法被触发时,做一些事情(比如根据某些标准动态加载一些用户控件)。
我该怎么做?
编辑:
这是我需要的简化版本。 UpdatePanel2.Update()方法可以从MasterPage和...等所有地方触发。 doing some stuff
不只是加载用户控件
答案 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();