문제

DROPDOWNLIST_TRACKING_STATUS라는 드롭 다운리스트를 채우는 테이블이 있습니다. 테이블에는 3 개의 열이 있습니다. ID, TrackingName 및 활성화. 드롭 다운리스트를 채울 때 활성="Y"인 모든 레코드를 당깁니다.

양식으로 데이터를 읽을 때 dropdownlist_tracking_status의 적절한 값을 사전 선택하려고합니다. 현재 상태가 비어 있으면 (아직 선택되지 않은 경우). 그렇지 않으면 이전에 선택한 값과 동일하게 설정합니다. 내가 가진 문제는 현재 추적 상태가 비활성으로 표시된 상태 인 상태 인 경우 (활성화 된 경우 "n"로 설정된 경우) 오류가 발생합니다. 분명히 드롭 다운리스트에 존재하지 않는 값을 미리 선택할 수 없기 때문에

이 문제를 해결하는 방법에 대한 아이디어는 무엇입니까? 내 현재 코드 블록은 다음과 같습니다.

if ((DT["TrackingStatus"].ToString() == ""))
{
   DropDownList_Tracking_Status.SelectedValue = "2";
}
else
{
   DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString());
}
.

편집 드롭 다운리스트를 채우는 테이블이 활성 필드가 들어있는 것을 채우는 테이블입니다. DT라는 SqlDataReader는 해당 필드가 없습니다. 나는 두 가지를 조인하고 활성의 가치를 검사하는 쿼리를 만들 수 있지만 더 쉬운 방법이 있기를 바랍니다. (의사 코드에서) 말하는 것 :

If DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); throws you an error, do this instead...
.

도움이 되었습니까?

해결책

try-catch 블록에 코드를 배치 할 수 있습니다.
try
{
 DropDownList_Tracking_Status.SelectedValue = DT["TrackingStatus"].ToString();
}
catch
{
 DropDownList_Tracking_Status.SelectedValue = "2";
}
.

값이 존재하는 경우 가치를 바인딩합니다. 그렇지 않으면 catch 블록에서 기본값을 asign 할 수 있습니다.

다른 팁

는 다음과 같은 가능합니다 (아마도 null 레코드의 수표가 확인할 수 있음).

if ((DT["TrackingStatus"].ToString() == ""))
{
   DropDownList_Tracking_Status.SelectedValue = "2"; 
}
else if(DT["Active"] == "N")
{
    DropDownList_Tracking_Status.SelectedValue = "2"; 
}
else
{
   DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString());
}
.

업데이트 DT에 활성 필드를 추가하는 것이 좋습니다. 또는 대안은 드롭 다운 목록에 목표 값이 포함되어 있는지 확인하는 것입니다.스택 오버플로 질문을 참조하십시오 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top