gpt4 book ai didi

c# - asp.net 文本框失去焦点的方法?

转载 作者:IT王子 更新时间:2023-10-29 04:18:12 24 4
gpt4 key购买 nike

asp.net文本方法的Lost focus方法怎么写?请任何人有任何想法写这个,与我分享?

最佳答案

所以我知道每个人都展示了基本的客户端方法,这很好,但我想至少展示一个解决方案来处理服务器上的特定客户端事件。

让我们看一下代码,并逐个检查它。

由于 ASP.Net TextBox 不公开 OnBlur 的服务器端事件,因此您必须手动完成。幸运的是,这很容易实现。假设您的 .aspx 页面中有这么一小段代码。您想在 TextBox 失去焦点时更新 Label 控件服务器端。

<asp:Label ID="lblOnBlur" runat="server">On Blur Example</asp:Label><br />
<asp:TextBox ID="tbOnBlur" runat="server" ClientIDMode="Static" /><br />
<asp:Label ID="lblOutput" runat="server" />

ASP.Net 有一个内置的 client side function被调用以触发带有两个参数的回发:

  1. 目标(引起事件的控件的 ID)
  2. 参数(您要传递给服务器的可选信息)

可以通过将以下属性和值添加到您的文本框来在标记中连接事件:

onblur="__doPostBack('tbOnBlur','OnBlur');"

但是,该框架有一种简单的方法可以为您的服务器端生成此脚本。在您的 Page_Init 方法中,只需添加对 GetPostBackEventReference 的调用即可并将其分配给您控制的“onblur”属性:

protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}

对于标准的服务器控制事件,事件连接和调用是通过实现 IPostBackEventHandler 自动为您处理的。 .对于一次性解决方案来说,这需要大量工作,因此让我们通过检查请求参数来手动处理它。

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var ctrlName = Request.Params[Page.postEventSourceID];
var args = Request.Params[Page.postEventArgumentID];

HandleCustomPostbackEvent(ctrlName, args);
}
}

private void HandleCustomPostbackEvent(string ctrlName, string args)
{
//Since this will get called for every postback, we only
// want to handle a specific combination of control
// and argument.
if (ctrlName == tbOnBlur.UniqueID && args == "OnBlur")
{
lblOutput.Text = "On Blur Event Handled Server Side!" + DateTime.Now;
}
}

最后,如果您不介意稍微深入研究一下框架,那么模拟服务器端事件并不是非常困难。

希望这对您有所帮助!

干杯,
乔希

关于c# - asp.net 文本框失去焦点的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com