updateppanel . update()方法的事件处理程序
本文关键字:事件处理 程序 方法 update updateppanel | 更新日期: 2023-09-27 18:12:33
我有两个UpdatePanel在我的Web-form。都是UpdateMode="Conditional"
。UpdatePanel1中的异步触发器触发UpdatePanel2.Update()
事件。
我想在UpdatePanel2每当他的update()方法被触发时,做一些事情(比如根据一些标准动态加载一些用户控件)。
我该怎么做呢?
编辑:这是我需求的简化版本。UpdatePanel2.Update()方法可以从任何地方触发,比如MasterPage和... .doing some stuff
不只是加载user-control
检查这个答案:如何知道哪个UpdatePanel导致部分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和回发时,requireupdate属性返回false,而UpdatePanel的子控件没有被添加到触发器集合中。
注:上面的代码需要FullTrust代码访问安全级别,因为它使用反射
你已经回答了你的问题。您将决定何时更新updatepanel2,因此将由您指定动态添加控件的代码。至于事件,框架没有为每次updatepanel更新提供一个启动的事件:)。
例子:
UpdatePanel2.Update();
由于在此语句之前调用了update,因此您将添加以下所有控件
TextBox tbox = new TextBox();
tBox.ID = "txtbox1";
UpdatePanel2.Controls.Add(tBox);
UpdatePanel2.Update();