【问题标题】:Change text in UpdatePanel更改 UpdatePanel 中的文本
【发布时间】:2015-02-15 21:06:39
【问题描述】:

我是 ASP.NET 的新手。这是我的代码:

 <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Button Text="Change" runat="server" ID="BtnChangeText" OnClick="BtnChangeText_OnClick"/>
            <asp:Label runat="server" ID="LblTest" Text="Change me!"></asp:Label>        
        </ContentTemplate>          
 </asp:UpdatePanel>

这是我的服务器代码:

    protected void BtnChangeText_OnClick(object sender, EventArgs e)
    {
        LblTest.Text = "Hello World!";
    }

为什么它不起作用?我该如何做这项工作?

提前致谢!

【问题讨论】:

    标签: c# asp.net asp.net-ajax updatepanel


    【解决方案1】:

    在你的&lt;/ContentTemplate&gt;之后添加这个

    <Triggers>         
      <asp:AsyncPostBackTrigger ControlID="Change" EventName="Click" /> 
    </Triggers> 
    

    【讨论】:

    • 由于两个控件都在更新面板中,他的代码应该可以工作。我仍然不知道触发器,但我正在使用 ajax 及其工作。那有什么区别呢?
    • @ALOK 没错,代码应该可以工作。使用多个更新面板或导致更新面板刷新外部事件时,触发器会有所帮助。看看这个:asp.net/ajax/documentation/live/overview/…
    【解决方案2】:

    您已将 updateMode 属性 设置为 Conditional,因此 updatePanel 不会自动刷新(因为这是默认设置)!!

    Simpel 解决方案将其设置回Always

    MSDN 更新模式

    总是
    UpdatePanel 控件的内容会针对源自页面的所有回发进行更新。这包括异步回发。

    有条件的
    UpdatePanel 控件的内容在以下条件下更新:

    • 如果 UpdatePanel 控件的 Update 方法被显式调用。

    • 如果使用 UpdatePanel 控件的 Triggers 属性将控件定义为触发器并导致回发。在这种情况下,控件是用于更新面板内容的显式触发器。触发器控件可以位于定义触发器的 UpdatePanel 控件内部或外部。

    • 如果 ChildrenAsTriggers 属性设置为 true,并且 UpdatePanel 控件的子控件导致回发。在这种情况下,UpdatePanel 控件的子控件是用于更新面板的隐式触发器。嵌套 UpdatePanel 控件的子控件不会导致外部 UpdatePanel 控件被更新,除非它们被明确定义为触发器。

    详情请见MSDN!

    【讨论】:

    • 这在带有 .NET 4.0 和 Mono 版本 4.4.0 的 Ubuntu Linux 16.04 上可能是错误的。谢谢。
    猜你喜欢
    • 2021-12-26
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多