2012-09-07 3 views
5

매우 일반적인 ASP.NET 드롭 다운 목록에 문제가 있습니다. AutoPostback=false 페이지에 드롭 다운 목록이 있습니다.드롭 다운 목록 selectedindex가 페이지 새로 고침에서 작동하지 않습니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.dropDownList.Items.Add(new ListItem("text1", "value1")); 
     this.dropDownList.Items.Add(new ListItem("text2", "value2")); 
     this.dropDownList.SelectedIndex = 0; 
    } 
} 
  • 페이지를 실행하고 두 번째 옵션 선택 : 그리고 코드는 드롭 다운리스트의 내용을 생성하는 텍스트 2를. 그 후
  • 는 F5 키를 눌러, 이것은 페이지로드 (아직 포스트 백을 수행하지 않은 I, 단지 선택 드롭 다운리스트의 항목 F5 키를 눌러 변경할 수 있습니다)을 할 것입니다

내가 예상 드롭 다운리스트는 것이다 이제 기본 항목을 index = 0으로 선택했지만 선택한 항목은 여전히 ​​"text2"항목입니다 - 내가 선택한 항목입니다. 이 경우 this.dropDownList.SelectedIndex = 0;이 작동하지 않습니다.

나는 완전히 이해하지 못한다. 누구든지 나를 도울 수 있을까?

업데이트 :이 동작은 Firefox에서만 발생하며 Chrome/Internet Explorer에서는 발생하지 않습니다.

+0

이는 true AutoPostBack은 페이지를 수행 할 때 경우 블록이 충돌하지 않고 선택한 이동으로 txt2 가져 오기> this.dropDownList.SelectedIndex = 0; ! ispostback 블록 중 – Devjosh

+0

하지만 AutoPostBack = false 및 코드 this.dropDownList.SelectedIndex = 0; 은 타격을 받고있다 – user1514431

+0

나의 나쁜 나는 그 질문을 읽을 수 없었다 – Devjosh

답변

1

F5 키를 누르면 요청과 함께 게시 헤더가 전송됩니다.
마지막 요청은 두 번째 옵션을 선택하는 것이 었습니다. 그렇게 선택됩니다.

URL을 다시 입력하거나 검색 주소창에 Enter 키를 누르십시오. 당신은 게시물 데이터를 보내지 않을 것입니다. 이 경우 SelectedIndex는 0입니다.

+0

멋지게 explainned +1 이미 – Devjosh

+0

그것은 정말로 흥미있다. 그렇다면 마지막 요청을 잊어 버리고 원하는 첫 번째 항목을 선택하는 해결책이 있습니까? – user1514431

+1

F5는 마지막 요청을 다시 보내려고합니다. 당신은 html5 히스토리 API를 볼 수 있습니다. 도움이 될 수 있습니다. 또한 자바 스크립트에서 F5를 듣고'location.href'를 설정할 수 있습니다. – nunespascal

2

무엇을 잘못 이해하고있는 것 같습니다. 게시물의 의미는입니다. 이 아닐 경우은 페이지 새로 고침을 의미합니다. 브라우저에서 F5를 누르면 원래 요청이 서버로 전송되고 Page.IsPostBack거짓이됩니다.

실제 포스트 백을 수행하려면 페이지에 asp:Button 서버 컨트롤을 추가하고 클릭하거나 DropDownList에 AutoPostBack=true을 설정하면됩니다.


파이어 폭스는 클라이언트 측 캐싱 어떤 종류의 일을한다 것 같다, 그래서 당신은 F5를 칠 때 서버에 다른 왕복하지 않습니다. 페이지가로드 될 때 select 요소를 재설정하여이 문제를 해결할 수 있습니다.

<script type='text/javascript'> 
    document.getElementById('<%= dropDownList.ClientID %>').selectedIndex = 0; 
</script> 

(참고 :. 페이지 하단에이를 넣어 문서가로드 된 후 자신을 실행) (! ispostaback)

+0

설명해 주셔서 감사합니다. 내가 여기서하려고하는 것은 사용자가 F5 버튼을 누르거나 브라우저에서 새로 고침 버튼을 누르는 경우를 처리하는 것입니다. – user1514431

+0

@user1514431 귀하의 질문에 더 잘 부응하기 위해 제 답변을 업데이트했습니다. – McGarnagle

+0

좋아요! 나는 FF로 너무 일하기 위해 이것을하고있다. 그러나이 문제는 드롭 다운 목록뿐만 아니라 페이지 (텍스트 상자, 확인란 ...)의 모든 컨트롤에 대해서도 발생하므로 더 나은 솔루션을 찾고 있습니다. 최소한 우리는 여기서 마지막 수단으로 해결책을 얻었습니다. – user1514431

관련 문제