首页 > 解决方案 > Asp.Net,UpdatePanel 中的文本框文本更改问题

问题描述

触发文本框对象的 textchanged 事件时出现问题。例如,当我想按 Tab 键时,它应该专注于下一个对象,但它没有。或者当我单击一个按钮时,我必须单击两次。我该如何解决这个问题?我添加了代码和我遇到的问题作为 gif。

默认.aspx

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <div class="form-group row">
                <label class="col-lg-2 col-form-label">İşlem Tutarı</label>
                <div class="col-lg-4">
                    <asp:TextBox ID="txtTutar" CssClass="form-control form-control-sm price" AutoPostBack="true" placeholder="0,00 ₺&quot; runat="server" OnTextChanged="txtTutar_TextChanged"></asp:TextBox>
                </div>
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="txtTutar" EventName="TextChanged" />
        </Triggers>
    </asp:UpdatePanel>

默认.asp.cs

txtTahsilEdilen.Text = txtTutar.Text;

在此处输入图像描述

标签: c#asp.netajaxupdatepanel

解决方案


您可以转储触发器 - 它对您没有任何价值。您需要为该文本框设置 AutoPostBack="true" - 触发器不会帮助您。

那么到底是什么触发了呢?

它用于触发同一页面上的另一个单独的面板!!!

因此,您可以在面板中拥有一个按钮,甚至是一个文本框。他们仍然必须在这里发帖 - 您需要/必须将回帖添加到文本框中。

触发器有什么作用?好吧,假设你有一个第二个更新面板——里面有很多东西。好吧,您背后的代码可能会更新两个面板。

因此,您将向第二个面板添加一个触发器,该触发器指向您的文本框(或第一个面板中的按钮)。现在,当第一个面板更新面板更新时(由于回发),带有触发器标签和设置的第二个面板也将刷新。

但是,该功能不会为您自动回发。因此,不需要在 SAME 更新面板中指定触发器,这没有意义,并且不会为您做任何事情。

除非触发了回发,否则触发器设置根本不执行任何操作,并且它们不会导致回发,并且它们不区分按钮代码,或者在这种情况下运行文本框事件代码。

因此,理论上,触发器设置将放置在第二个不同的更新面板中,当一个按钮(或文本框)在另一个更新面板中回发时,您还希望重新刷新该面板。但是,要使其正常工作,您仍然必须导致并进行回发。

所以这里的目的不是让更新面板回发,而只是检测另一个不同的面板真的只是做了回发。

无论我们以哪种方式注意和解释上述内容?

触发设置不会触发按钮或文本框回发-这是您的工作。因此,更新面板中的触发器设置可以设置为发生给定按钮的某些回发,然后确保具有触发器的面板也将更新。但是对于同一个面板 - 没有实际意义或理由这样做,因为触发标签仅在您导致回发时才起作用。并且触发设置仅指向不同更新面板中的按钮或控件。

底线:删除触发标签 - 不需要它。

将文本框设置为自动回发 = true


推荐阅读