c# - 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 ₺" 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;
解决方案
您可以转储触发器 - 它对您没有任何价值。您需要为该文本框设置 AutoPostBack="true" - 触发器不会帮助您。
那么到底是什么触发了呢?
它用于触发同一页面上的另一个单独的面板!!!
因此,您可以在面板中拥有一个按钮,甚至是一个文本框。他们仍然必须在这里发帖 - 您需要/必须将回帖添加到文本框中。
触发器有什么作用?好吧,假设你有一个第二个更新面板——里面有很多东西。好吧,您背后的代码可能会更新两个面板。
因此,您将向第二个面板添加一个触发器,该触发器指向您的文本框(或第一个面板中的按钮)。现在,当第一个面板更新面板更新时(由于回发),带有触发器标签和设置的第二个面板也将刷新。
但是,该功能不会为您自动回发。因此,不需要在 SAME 更新面板中指定触发器,这没有意义,并且不会为您做任何事情。
除非触发了回发,否则触发器设置根本不执行任何操作,并且它们不会导致回发,并且它们不区分按钮代码,或者在这种情况下运行文本框事件代码。
因此,理论上,触发器设置将放置在第二个不同的更新面板中,当一个按钮(或文本框)在另一个更新面板中回发时,您还希望重新刷新该面板。但是,要使其正常工作,您仍然必须导致并进行回发。
所以这里的目的不是让更新面板回发,而只是检测另一个不同的面板真的只是做了回发。
无论我们以哪种方式注意和解释上述内容?
触发设置不会触发按钮或文本框回发-这是您的工作。因此,更新面板中的触发器设置可以设置为发生给定按钮的某些回发,然后确保具有触发器的面板也将更新。但是对于同一个面板 - 没有实际意义或理由这样做,因为触发标签仅在您导致回发时才起作用。并且触发设置仅指向不同更新面板中的按钮或控件。
底线:删除触发标签 - 不需要它。
将文本框设置为自动回发 = true
推荐阅读
- javascript - 从网络摄像头视频中提取帧并发送到套接字
- r - 使用 ggplot2 在 r 中绘制异常图
- raspberry-pi - 如何从树莓派获取实时音频数据到 simulink 并应用实时信号处理
- google-cloud-dataflow - Google Cloud Dataflow 因启用 compute.requireShieldedVm 而失败
- c# - 在c#中,当我们在方法逻辑中使用Task.Run()在后台运行线程时,是否必须使用async关键字来调用方法?
- c - 在由参数传递的指针上的函数内使用 malloc
- wordpress - wordpress 插件 gogole 地图出现错误:ApiNotActivatedMapError
- c# - Open XML:我们发现“myfile.xlsx”中的某些内容存在问题
- python - 如何从 ManyToOne 表中只获取一个对象,而不是查询集?
- image - 如何将图像保存到 playerprefs 并将它们显示到另一个场景?