AutoPostBack=true
및 EnableViewState=false
이있는 DropDownList
의 ASP.NET이 있습니다. 페이지에 아무것도 수행하지 않는 버튼이 있습니다. ddl에서 선택을 변경하면 예상대로 되돌아옵니다. 버튼을 클릭하면 페이지가 다시 게시되고 ddl의 SelectedIndexChanged
이 실행됩니다. 왜 해고당하는거야?버튼을 클릭 할 때 SelectedIndexChanged가 DropDownList에 대해 실행되는 이유는 무엇입니까?
7
A
답변
2
viewstate를 사용하도록 설정하십시오. 이는 일반적인 문제입니다.
편집
당신이 viewstate가를 사용하지 않으려면 당신은 드롭 목록 값을 직접 추적 할 것 같은이 남자했다 Microsoft에서 DropDownList OnSelectedIndexChange to 0th index w/out ViewState
10
"의견을 보내 주셔서 감사합니다. 페이지에서 ViewState가 해제되어 있거나 DropDownList 컨트롤에서 인 경우 이 선택되었습니다. 색인을 저장할 수 없으므로 각 게시물에 선택한 색인이 변경된 것처럼 보입니다. 자신이 선택한 인덱스를 저장하고 을 비교하여 선택이 실제로 변경되었는지 확인하거나 DropDownList에서 ViewState를 사용하도록 설정할 수 있습니다. "드롭 다운리스트의
귀하의 경우에는
에게 viewstate가 false입니다. 위의 제안과 동일하게 사용하거나 선택한 항목의 인덱스를 비교할 수 있습니다.
1
당신이를 Page_Load에 DDL을로드하는 경우, 당신은을 클릭하면 버튼을 누르면 다시 page_load로 이동하여 선택한 인덱스를 변경하는 ddl 항목을 다시로드합니다. 그러나이 코드는 모르기 때문에 여기는 가정입니다.
0
동일한 문제가 있습니다. 렌더링 기능 Page_Load
.
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender
페이지가 Page_Load
을 기본로드 함수로로드 한 다음 프리 렌더링을 실행할 때 다시로드한다는 사실을 완전히 놓쳤습니다. 나는 그것을 다음과 같이 바꿨고, 이제 함수는 한번만 호출된다 :
Sub Renderer(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender