【发布时间】:2022-01-06 17:31:06
【问题描述】:
离开文本框后,我希望它专注于下一个对象。或者我希望按钮在单击按钮时起作用。在我现在遇到的问题中,我在离开文本框后在 gif 中遇到了问题。
default.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>
<div class="form-group row">
<label class="col-lg-2 col-form-label">Tahsil Edilen Tutar</label>
<div class="col-lg-4">
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtTahsilEdilen" AutoPostBack="true" CssClass="money form-control form-control-sm price" placeholder="0,00 ₺" runat="server" OnTextChanged="txtTahsilEdilen_TextChanged"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtTutar" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
default.asp.cs
protected void txtTutar_TextChanged(object sender, EventArgs e)
{
txtTutar.Text = FormatMoney(decimal.Parse(txtTutar.Text));
txtTahsilEdilen.Text = txtTutar.Text;
}
【问题讨论】:
-
您已经被告知,触发您已经在其中的同一个更新面板是零意义的。并且此“txtTahsilEdilen.Text = txtTutar.Text;”的控件在哪里。您不能在代码后面更新更新面板之外的控件。要么发布更多标记,要么解释这个控件在页面上的位置/原因:“txtTahsilEdilen.Text = txtTutar.Text;”
-
我更新了问题。触发的对象已经在更新面板中。我希望将写入 UpdatePanel1 中名为 txtTutar 的对象中的值写入 UpdatePanel2 中名为 txtTahsilEdilen 的对象中。我可以做我想做的事。但是当我在txtTutar对象中输入数据后按“tab”键或点击页面上的任何对象时,我点击的对象没有焦点。
-
完整还是仅更新面板回帖?该标记到达服务器 - 后台代码运行,然后将更新面板的全新副本发送回客户端。就像任何网页回发一样,光标从第一个控件开始。您将不得不引入一个 control.Focus()。你大概可以点击两次,焦点是否出现?您的回帖是由于该点击,但实际上是由于文本更改事件。我会删除文本更改服务器端事件。您必须考虑使用 ajax 调用代替服务器端事件,并删除文本更改事件。
-
小惊喜。跳转到新控件的单击事件不是问题 - 事实上,文本更改会发回整个更新面板,因此您的单击甚至没有机会运行。当您单击新控件时,由于文本更改而回发。您必须真正转储该文本更改事件,因为如果它触发,则会发生面板的标准往返行程,运行代码背后的代码,并且面板的新副本会返回客户端。结果,您总是会丢失点击事件。
-
您在使用 ajaxToolkit - 它有一个货币输入掩码。另一个想法是使用 jQuery 插件来屏蔽资金输入。
标签: c# asp.net ajax updatepanel