2010-01-07 4 views
0

두 개의 매우 유사한 .aspx 페이지가 있습니다. 둘 다 DropDownList 컨트롤을 포함합니다. 두 DropDownList로 컨트롤 '의 EnableViewState가 False로 설정됩니다DropDownList.SelectedItem 때때로 null, 가끔 뒤로 게시하지 않음, EnableViewState = False

<asp:DropDownList ID="ddl" runat="server" EnableViewState="False" /> 

이 두 페이지에하는 LinkButton있다. btn_Click 처리기에서 ddl.SelectedItem 속성에 액세스하려고 시도하면 (EnableViewState = False로 인해 null이어야 함, 올바르다 고 생각합니까?) 한 페이지에서는 null이지만 null이 아닙니다. 올바른 값을 가짐). 그게 가능할 수있는 방법을 알려주시겠습니까?

string txt = ddl.SelectedItem.Text; // SelectedItem sometimes null, other times not 
한 경우에 드롭이 AjaxToolkit의 CascadingDropDown 제어를 사용하여 작성되는 두 페이지의 드롭 다운의 차이가 (이 경우, selectedItem가 거짓으로 설정의 EnableViewState 속성에도 불구하고, null이 아니고)된다

,의 다른 경우 드롭 다운의 항목은 Page_Load 속성, if 및 if 블록에 채워지고 IsPostBack이 false인지 여부를 확인합니다 (항목은 첫 번째 요청에만 채워지기 때문에 다시 게시 할 필요는 없습니다).

감사합니다.

답변

1

CascadingDropDown이 enable viewstate 설정을 따르지 않습니다. null이 필요한 경우 페이지로드 또는 유사한 이벤트에서 null로 재설정해야합니다.

+0

그건 제가 가지고 있지 않은 정보입니다. 정말 고마워요. 사실, 그 반대의 경우였습니다. "over-ajaxified"응용 프로그램에서 CascadingDropDown을 일반 DropDown으로 변환하고 있는데, 어떻게 SelectedItem 속성에 액세스하는 것이 EnableViewState가 false로 작동하는지 궁금합니다. 감사합니다. 스티븐. – michalstanko

+0

제어 도구 키트에는 이와 같이 예기치 않은 불일치가 많이 있습니다. –

0

JavaScript를 통해 드롭 다운을 채우는 경우 ASP.NET은 그 방식에 관계없이 그 값을 볼 수 있습니다.

0

값을 변경하면 선택한 색인이 서버에 다시 게시됩니다. 항목이 목록에 적용되면 선택한 색인 속성이 적용되므로 항목이없는 경우 일부 항목이 목록에 추가 될 때까지 적용되지 않는다고 생각합니다. 따라서 목록을 다시 바인드하고 목록에서 값을 선택하고 드롭 다운을 리 바인드하면 선택된 색인이 적용됩니다. 아마도 그럴 수 있습니다.

HTH

관련 문제