2011-08-08 4 views
2

내 웹 페이지에 40 개의 asp.net 드롭 다운리스트가 있습니다. DataBind()를 사용하여 서버 측의 컨트롤을 바인딩 할 때 페이지가 비어있는 동안 12 초가 걸립니다. 데이터 바인딩이 없으면 페이지가 1 초 내에로드됩니다.asp.net 드롭 다운 - 자바 스크립트를 사용하여 채우기

그래서 클라이언트 측에서 바인딩을 결정했습니다. 내가봤을 때, 나는 link을 얻었다. 하지만 내가 직면하는 문제는, 내가 PopulateControl() 자바 스크립트에서 사용할 때, 나는 단지 SelectedIndex 포스트 백 동안 얻을 것이다.

asp.net 드롭 다운에는 SelectedIndex, SelectedValue, SelectedText와 같은 속성이 있습니다. 이러한 속성은 코드 숨김에서 많이 사용되며 선택한 인덱스를 기반으로 논리를 변경하는 것은 나에게 매우 어려울 수 있습니다.

거기에 내가 자바 스크립트로 컨트롤을 바인딩하고 포스트 백 동안 모든 속성을 얻을 수있는 방법이 있나요?

미리 감사드립니다.

답변

2

드롭 다운의 항목이 페이지로드에 없었기 때문에 일반 ASP.net 방식으로 액세스 할 수 없습니다. 선택한 값을 얻기 위해 요청 개체를 사용 : Request 객체에 전달 된 이름이 엉망이 될 수 있습니다 당신이 MasterPages 또는 다른 명명 컨테이너를 사용하는 경우

string selVal = request.Form["dropDownName"]; //C# code 

하는 것은주의해야합니다.

일반 HTML 선택 컨트롤을 사용할 수도 있습니다.

+0

항목은 aspx 페이지에 있습니다. 그래서 그것은 page_load에서 사용할 수 있어야한다고 생각합니다. 이러한 항목에 바인드 된 데이터 만 클라이언트 측 (Ajax)에서 수행됩니다. 비록, 자바 스크립트 바인딩 된 값을 포스트 백 동안 코드 숨김 (서버 측)에서 사용할 수없는 이유가 궁금합니다. – Raghav

+0

내 부분의 단어 선택이 잘못되었습니다. 나는 드롭 다운리스트 자체에서 항목 (옵션)을 언급하고 있었다. 참고로 모든 목록에는 동일한 항목이 포함되어 있습니까? 원래 페이지로드 시간이 ~ 40 초 였을 때 여러 데이터베이스 호출이 있었습니까? –

+0

오. 괜찮아. 모든 드롭 다운에는 다른 값이 있습니다. 모든 DataBind() 주석 처리 된 페이지를로드 할 때로드 1 초. 컨트롤이 이제 비어 있습니다. 그래서 나는 ajax 호출을 사용하여 바인딩 JS를 다시 작성했다. DB 호출은 단일 호출이며 40 개의 테이블을 모두 가져옵니다. 2 초 후에 실행되고 첫 번째 히트 후 결과가 캐싱됩니다. 그래서 지금은

관련 문제