2011-02-01 7 views
2

목록 상자와 선택한 인덱스 변경 및 텍스트 변경 이벤트가있는 텍스트 상자를 각각 aspx 페이지에 배치했습니다. 이제 텍스트 상자에 뭔가를 쓰고 다른 곳을 클릭하여 목록 상자에서 값을 선택한 다음 텍스트 상자의 첫 번째 텍스트 변경 이벤트를 호출 한 다음 목록 상자의 선택된 인덱스 변경 이벤트를 호출합니다. 그 후 텍스트 상자의 텍스트 변경 이벤트를이라고합니다. 어떤 신체가 어떤 일이 일어날 지 알 수 있습니까? 뒤에ASP.Net : 텍스트 상자의 텍스트 변경 이벤트 호출 순서에 문제가 발생했습니다.

<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) 
     { 

     } 
    } 
} 
+0

정말인가요? 이 정확한 코드를 실행하고 ListBox_IndexChanged 이벤트가 먼저 발생하고 Text_Changed 이벤트가 한 번만 발생했습니다. – Pandincus

+0

아, 알겠습니다. 크롬 대신 IE에서 테스트 할 때 순서대로 말합니다. – Pandincus

답변

1

AutoPostBack은 (는) JavaScript 이벤트를 컨트롤에 연결하여 작동합니다. 각 브라우저는 JavaScript를 약간 다르게 처리하므로 순서에 대한 실질적인 보장은 없습니다. 내가 구글 크롬에 코드를하려고하면

예를 들어, 다음과 같은 일련의 이벤트가 발생합니다

  1. 요청이
    1. ListBox_IndexChanged 이벤트가
    2. Text_Changed 이벤트가
    3. 을 호출되는 호출되는 서버로 전송
  2. 응답이 클라이언트에게 반환됩니다.
  3. 클라이언트로 돌아갑니다
    1. Text_Changed 이벤트가
  4. 응답 호출되는 서버로 전송

    1. 요청 :

    그러나, 인터넷 익스플로러 8에, 나는 다음과 같은 순서로 나타났습니다

  5. 다른 요청이 서버로 전송되었습니다.
    1. ListBox_IndexChanged 이벤트는하지만, 단지 자바 스크립트 구현을 변화시키는, 이것은 ASP.NET의 잘못이 아닙니다
    2. Text_Changed 이벤트가
  6. 2 응답 클라이언트

로 돌아갑니다을 호출되는 호출되는 여러 브라우저에서 볼 수 있습니다.

특정 이벤트 시퀀스에 의존해야하는 경우 AutoPostBack은이를자를 수 없습니다. 귀하의 상황에 따라 jQuery과 같은 브라우저 간 호환 라이브러리를 사용하여 자체 자바 스크립트 이벤트를 구현할 수 있습니다. 프로그래밍 방식으로 __doPostBack() 함수를 사용하여 서버에 다시 콜백 할 수 있습니다.

0

는 항목의 텍스트로 대체 아래

는 마크 업입니다. 그래서 두 번째 TextChanged 이벤트를 얻습니다.

+0

그가 코드를 그대로 쓴다면 그 값을 텍스트에 복사 할 이유가 없으므로 접근법이 논리적이지 않은 것으로 보입니다. 그렇다면 그 이유를 설명하십시오. –

+0

그렇지 않습니다. LordCover가 옳습니다. – Anoop

관련 문제