2010-07-18 8 views
3

내 ASP.NET 페이지의 경우 코드 뒤에 다양한 항목/옵션을 DropDownList에로드하지만 SelectedIndex를 할당하여 기본값을 설정하지 않습니다. 내가 다시 포커스를 설정하거나 DropDownList의 값을 변경하지 않더라도, 내가 선택한 포스트 백 SelectedIndex가 0으로 설정되었음을 알 수 있습니다.ASP.NET DropDownList/HTML 선택 목록 기본 선택

코드 숨김 또는 마크 업에 별도로 지정되지 않은 경우 DropDownList가있는 포스트 백에서 SelectedIndex에 기본값 0이 사용됩니까? 그렇다면 선택 목록에 대한 HTML 표준의이 부분입니까, 아니면 이것이 ASP.NET에 구현 된 방식입니까?

답변

4

이것은 HTML SELECT 컨트롤의 정상적인 동작입니다.

선택한 속성을 사용하지 않으면 항상 첫 번째 항목 (인덱스 0)에서 시작됩니다.

특히 사용자가 옵션을 선택하기를 원하기 때문에 ASP.NET에서이를 원하지 않습니다.

그래서 내가하는 일은 유효성을 검사 할 수있는 빈 항목을 추가하는 것입니다.

<asp:DropDownList runat="server" DataSourceID="SomeDS" AppendDataBoundItems="true"> // Notice the last property 
    <asp:ListItem Text="Please select an option" Value="" /> 
</asp:DropDownList> 

이 방법은 I 값을 사용자가 선택하도록 강요 비어 있는지를 확인하는 검증을 설정할 수있다.

1

코드 뒤에서이 작업을 수행하려는 사람은 Insert 함수를 사용하고이 SO Question에서 설명한대로 Index을 0으로 지정하여 추가 목록 항목을 추가 할 수 있습니다. 전화 한 후에 반드시 확인하십시오. DataBind()

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code 
myDropDownList.DataTextField = "Value"; 
myDropDownList.DataValueField = "Id"; 
myDropDownList.DataBind(); 

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));