2010-03-16 2 views
7

AutoPostBack=trueEnableViewState=false이있는 DropDownList의 ASP.NET이 있습니다. 페이지에 아무것도 수행하지 않는 버튼이 있습니다. ddl에서 선택을 변경하면 예상대로 되돌아옵니다. 버튼을 클릭하면 페이지가 다시 게시되고 ddl의 SelectedIndexChanged이 실행됩니다. 왜 해고당하는거야?버튼을 클릭 할 때 SelectedIndexChanged가 DropDownList에 대해 실행되는 이유는 무엇입니까?

답변

10

피드백 : - http://connect.microsoft.com/VisualStudio/feedback/details/103844/dropdownlist-always-fire-selectedindexchanged-event-when-viewstate-is-disabled-and-the-selected-item-is-not-changed-by-the-user

"의견을 보내 주셔서 감사합니다. 페이지에서 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