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

我在aspx页面中分别放置了一个列表框和一个包含Selected Index Changed和Text Changed事件的文本框。现在,如果我在文本框中写入内容然后单击其他位置选择列表框中的值,则会调用文本框的第一个文本更改事件,然后调用列表框的选定索引更改事件。之后再次调用文本框的文本更改事件。任何机构都可以提供一些见解,为什么会这样? 以下是加价:
<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中尝试您的代码时,会发生以下事件序列: 请求发送到服务器 调用ListBox_IndexChanged事件 调用Text_Changed事件 回复回到客户端 但是,在Internet Explorer 8中,我注意到以下顺序: 请求发送到服务器 调用Text_Changed事件 回复回到客户端 另一个请求发送到服务器 调用ListBox_IndexChanged事件 调用Text_Changed事件 第二回应回到客户端 这不是ASP.NET的错,而是因为浏览器中不同的JavaScript实现,我想。 如果你需要依赖特定的事件序列,
AutoPostBack
不会削减它。根据您的具体情况,我可能会使用跨浏览器兼容的库(如jQuery)来实现自己的JavaScript事件。您可以使用
__doPostBack()
函数以编程方式回调服务器。     
选择新项目时,列表框文本部分中的文本将替换为项目文本。这就是你得到第二个TextChanged事件的原因。     

要回复问题请先登录注册