【问题标题】:ASP.NET 4.0: How to have UpdatePanel update only one control instead of all HTML in the ContentTemplate?ASP.NET 4.0:如何让 UpdatePanel 只更新一个控件而不是 ContentTemplate 中的所有 HTML?
【发布时间】:2011-11-16 15:38:09
【问题描述】:

我在内容模板中使用带有整个表格的 UpdatePanel。在这个更新面板中,我有一个下拉列表 A,它在其 onchange 事件上调用一个 javascript 函数,根据下拉列表的选定值将另一个控件的显示 CSS 属性设置为无。它按预期工作。但是,我有下拉 B 调用 SelectedIndexChanged,它用一组值填充下拉 C。那部分也有效。问题是,当下拉 B 的服务端事件被调用时,内容模板中的所有 HTML 似乎都被重置,导致我之前通过 CSS 隐藏的控件再次显示。

我想做的是让下拉列表 B 只更新下拉列表 C 而没有别的。如果我使用 Telerik 的 RadAjaxManager,那么我可以轻松地做到这一点,但我们没有那个 =。 ASP 更新面板是否支持我想做的事情?

注意:别担心,这次我不会删除我的问题 :)

【问题讨论】:

    标签: asp.net ajax updatepanel


    【解决方案1】:

    首先,您需要将 UpdatePanel 设置为条件模式更新:

    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    

    然后,在事件执行后,您需要在代码隐藏中更新您想要的 UpdatePanel:

    UpdatePanel1.Update();
    

    通过这种方式,您可以拥有多个 UpdatePanel,这将提高性能,因为它们处理不同的事件(以及更少的内容)。

    【讨论】:

    • UpdateMode 已经是有条件的,但我没有在代码隐藏中调用 .Update() 。不过,这对我不起作用,因为它似乎仍然在重置 ContentTemplate 中的所有 HTML。我需要设置任何触发器吗?目前没有。
    • 实际上,我认为我的问题是我在 ContentTemplate 中有整个部分。也许如果我使用带有 AsyncPostBackTrigger 的单独面板,它会起作用。
    • 设置一个 UpdatePanel 以仅包装您需要的 DDL,并在 selectedIndexChanged 事件结束时按照答案中的说明更新它。这应该会产生预期的效果
    • 你完全正确。我看到了这个链接,它证实了你的回答:ajax.net-tutorials.com/controls/updatepanel-control
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多