2008-10-23 2 views
1

예외 : 'Country'에 항목 목록에 존재하지 않아 유효하지 않은 SelectedValue가 있습니다. 파라미터 명칭 : 값SelectedValue가 잘못되었습니다. 목록에 존재하지 않습니다. - C#/ASP.NET

UserService.DsUserAttributes dsCountry = us_service.GetUserAttributeDropDown(systemId, "Country"); 
Country.DataSource = dsCountry.tblDropDownValues; 
Country.DataTextField = "AttrValue"; 
Country.DataValueField = "Id"; 
Country.DataBind(); 

dsCountry.tblDropDownValues ​​내에 유지 된 값은 :

Id          AttrValue  AttrName 
aefa28e0-a118-11dd-ad8b-080c210c9a66 PLEASE SELECT Country 
213a743e-ea0b-419c-bd44-03b1c35241b3 USA   Country 
eefa1387-8dc0-11d8-975f-13da67a41a5d CANADA   Country 

답변

2

이 오류가 발생할 때마다 내 데이터를 바인딩하기 위해 일치하는 키가 일치하지 않았기 때문입니다.

표시 한 라인이 문제가되지 않을 수도 있습니다. 다른 테이블에서 레코드를로드하고 해당 값을 드롭 다운 목록에 바인딩 할 때를 조사하십시오.

예를 들어 페이지에 국가 별 ID가 값 비싼 모든 국가 이름이 포함 된 드롭 다운 목록이있는 경우이 값은 모두 CountryTbl 테이블에 저장됩니다. 페이지에서 사용자가 편집하려는 다른 테이블의 레코드를 선택할 수있는 표가 있습니다. 이 레코드에 이름, 전화 번호 및 국가와 같은 정보가 포함되어 있고 그 모두가 다른 테이블의 UserTbl에 저장되어 있다고 가정 해 보겠습니다. 양식에서 UserTbl의 데이터를 바인딩하려고하면 CountryTownDownList를 UserTbl의 바인딩 된 값과 같게 설정하려고합니다.

하지만 나, 여러 번 나에게 일어난 일은 몇 번이나 나에게 일어났습니다. 더 이상 존재하지 않는 국가처럼 UserTbl에 잘못된 데이터가 있거나 다른 국가 필드에 다른 값이 있습니다. 국가 드롭 다운에서 값의

데이터베이스 테이블을보고 "CountryTbl"에있는 ContryId와 일치하지 않는 "UserTbl"에 CountryIds가 있는지 확인하십시오.

2

포스트 백에 데이터 바인딩보십시오. 이벤트 처리기가 DropDownList에 액세스 할 때 처음 DropDownList에 바인딩 한 값으로 다시 채워지지 않은 것처럼 들립니다.

또한 이벤트 처리기가 처리를 시작하기 전에 바인딩되기 위해 충분히 일찍 바인딩하십시오. OnInit 또는 OnLoad는 충분히 좋습니다.

가 가
  • 예외가 발생
      :

      그렇지 않으면, 일부 세부 사항을 더 필요로 하는가? 렌더링 중 또는 이벤트 핸들러의 포스트 백 중?

    1. 선택한 값에 액세스하는 코드의 지점을 가리킬 수있는 오류에 스택 추적이 있습니까?
    2. 언제 데이터를 바인딩하고 있습니까?
  • 0

    이것은 드롭 다운 목록에 바인딩 할 원본 데이터에 null이있는 경우에도 발생할 수 있습니다.

    관련 문제