gpt4 book ai didi

c# - ASP.Net:文本框的文本更改事件的调用序列问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:52 24 4
gpt4 key购买 nike

我在 aspx 页面中分别放置了一个列表框和一个文本框,其中包含 Selected Index Changed 和 Text Changed 事件。现在,如果我在文本框中写了一些东西,然后在没有点击其他地方的情况下在列表框中选择一个值,那么首先调用文本框的文本更改事件,然后调用列表框的选定索引更改事件。之后再次调用文本框的Text Change 事件。任何机构都可以了解为什么会发生这种情况吗?

下面是标记:

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ListBox_IndexChanged">
<asp:ListItem Text="abc" />
<asp:ListItem Text="def" />
</asp:ListBox>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="Text_Changed" />

代码隐藏:

namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void ListBox_IndexChanged(object sender, EventArgs e)
{

}

protected void Text_Changed(object sender, EventArgs e)
{

}
}
}

最佳答案

问题是 AutoPostBack 通过将 JavaScript 事件附加到您的控件来工作。每个浏览器处理 JavaScript 的方式略有不同,因此无法真正保证顺序。

例如,当我在 Google Chrome 中尝试您的代码时,会发生以下事件序列:

  1. 请求发送到服务器
    1. ListBox_IndexChanged 事件被调用
    2. 调用 Text_Changed 事件
  2. 回复给客户

但是,在 Internet Explorer 8 中,我注意到以下顺序:

  1. 请求发送到服务器
    1. 调用 Text_Changed 事件
  2. 回复给客户
  3. 另一个请求发送到服务器
    1. ListBox_IndexChanged 事件被调用
    2. 调用 Text_Changed 事件
  4. 第二次响应返回给客户

我想这不是 ASP.NET 的错误,而是不同浏览器的 JavaScript 实现不同所致。

如果您需要依赖特定的事件序列,AutoPostBack 不会削减它。根据您的情况,我可能会考虑使用像 jQuery 这样的跨浏览器兼容库来实现我自己的 JavaScript 事件。 .您可以使用 __doPostBack() 函数以编程方式回调服务器。

关于c# - ASP.Net:文本框的文本更改事件的调用序列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862990/

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