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

发布于 2024-12-12 17:13:51 字数 346 浏览 0 评论 0原文

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

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

我怎样才能做到这一点?

编辑 : 这是我的需求的简化版本。 UpdatePanel2.Update() 方法可以从任何地方触发,例如 MasterPage 和 ... 。 做一些事情不仅仅是加载用户控件

I have two UpdatePanel in my Web-form . Both UpdateMode="Conditional" . An asynchronous trigger in UpdatePanel1 fire UpdatePanel2.Update() event.

I would like in UpdatePanel2 whenever his update() method is fired , Do some stuff (like loading some user-control dynamically based on some criteria ).

How can I do that ?

Edit :
This is simplified version of my needs . UpdatePanel2.Update() method could fired from every where like MasterPage and ... . doing some stuff is not just loading user-control

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不交电费瞎发啥光 2024-12-19 17:13:51

检查这个答案:如何知道哪个 UpdatePanel 导致 您也可以使用这种方法,

而无需实现从现有的带有反射继承的 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!
    }
}

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

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

Check this answer: How to know which UpdatePanel causes the partial PostBack?

Also you can use such approach without implementing own UpdatePanel control inherited from existing one with reflection:

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!
    }
}

Be warned that the RequiresUpdate proeprty returns false when you set Conditional UpdateMode and postback caused by UpdatePanel's child control which isn't added to Triggers collection.

P.S. code above requires FullTrust code access security level since it use reflection

我最亲爱的 2024-12-19 17:13:51

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

示例:

UpdatePanel2.Update();

由于您在此语句之前调用了 update,因此您将添加所有控件,如下所示

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

Well you already answered your question. It is you who will decide when the updatepanel2 will update so it will be you specifying the code to add controls dynamically. As for the event, framework does not provide a event that launches for each updatepanel update :).

Example:

UpdatePanel2.Update();

since you called update before this statement you will add all your controls like below

TextBox tbox = new TextBox();
tBox.ID = "txtbox1";
UpdatePanel2.Controls.Add(tBox);
UpdatePanel2.Update();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文