2011-04-18 3 views
4

개체 목록에 데이터 바인딩 한 ASP.NET DropDownList가 있고 예외가 발생합니다. 메시지가 잘못 때문에이 오류가 날 미치게되고, 스크린 샷 같이 값이 명확 는 항목 목록에 존재 :DropDownList "항목 목록에 존재하지 않기 때문에 유효하지 않은 SelectedValue가 있습니다."

: 이 enter image description here

여기에 관련 ASP.NET 마크 업입니다

<asp:DropDownList ID="_ddlRequests" runat="server" AppendDataBoundItems="true" DataTextField="RequestNumber" DataValueField="RequestNumber"> 
    <asp:ListItem Text="" Value="" /> 
</asp:DropDownList> 
+0

에 데이터를 삭제하는 코드 아래에 사용할 수 있습니까? – DancesWithBamboo

+0

아닙니다. 컬렉션의 유일한 항목은 ASP.NET 마크 업에서 선언 한 항목입니다. – Mihai

+0

쿼리를 확인하고 바인딩 할 개체의 속성이 올바른지 확인하십시오. 이 링크를 사용해보십시오. 동일한 문제가있는 사람들이 많이 있습니다. http://forums.asp.net/t/1056921.aspx/6/10?+DropDownList1+has+a+SelectedValue+which+is+invalid+ + + + + + + + + + + + + items + of + – 2GDev

답변

3

먼저 데이터 바인딩 후 공백 값을 추가하는 것이 좋습니다. 의 라인을 따라 뭔가 :

_ddlRequest.Datasource = request; 
_ddlRequest.DataBind(); 
_ddlRequest.Insert(0, new ListItem("", "")); 

나는 이것이 내가 전에 그냥 대신이 방법을 그 일에 정착 한 동안 좌절에 내 머리를 두드리는 후이 건너 온 것입니다 제안 유일한 이유.

+0

나는 그 일을 끝냈다. – Mihai

+1

마크 업에서 목록 항목을 지정했기 때문이라고 생각한다. 마크 업에 추가하기 때문에 데이터 소스에 존재하지 않습니다. @Fishcake에 의한 위의 코드는 해당 인덱스 (0)에 기본값을 추가하는 좋은 방법입니다. 그런 다음 _ddlRequest.SelectedIndex = 0;을 사용하여 기본 선택 항목 및 값으로 설정할 수 있습니다. – leon

0

당신은 가능한 한 당신이 ""값으로 컬렉션에있는 다른 항목이 DropDownList

_ddlRequest.Items.Clear() 
관련 문제