2014-04-12 2 views
0

Dropdownlist에 바인딩 된 사용자 지정 클래스가 있습니다.DropDownList - 선택한 항목의 사용자 지정 속성 가져 오기

public class RoleIdSelection 
    { 
     public string RoleID { get; set; } 
     public string RoleDesc { get; set; } 
     public string OrgCode { get; set; } 
     public string OrgName { get; set; } 
     public string link { get; set; } 
    } 


List<RoleIdSelection> lstRoles = new List<RoleIdSelection>(); 
ddlUserProfile.DataSource = lstRoles; 
ddlUserProfile.DataTextField = "RoleDesc"; 
ddlUserProfile.DataValueField = "RoleId"; 
ddlUserProfile.DataBind(); 

선택한 항목에서 속성을 가져 오는 방법은 무엇입니까? 내가

RoleIdSelection rid = ddlUserProfile.SelectedItem as RoleIdSelection; 

을 시도했지만 그것은

경고 보여줍니다

참조 변환, 권투 변환, 언 박싱 변환을 통해 'RoleIdSelection'에 유형 'System.Web.UI.WebControls.ListItem을'변환 할 수 없습니다 , 변환 변환

답변

2

RoleIdSelection 목록을 다시 채운 다음 선택한 값을 사용하여 RoleIdSelection을 가져 오거나 RoleIdSelectio 목록을 직렬화 할 수 있습니다 n을 입력하고 숨겨진 필드에 저장하여 게시물에서 검색하십시오. 두 옵션 중 후자는 클라이언트가 조작 할 수 있도록합니다.

여기

//repopulate the List<RoleIdSelection> 
List<RoleIdSelection> roles = GetTheRoles(); 

RoleIdSelection role = roles.First(r => r.RoleID==ddlUserProfile.SelectedItem.Value); 

지금 역할이

+0

아주 조작 올바른 RoleIdSelection을 가지고 첫 번째 옵션을합니다. 당분간 나를 구할 것이다. 그러나 asp.net이이 fuctinaltiy를 지원하지 않는 이유는 무엇입니까? 나는 winforms에서 쉽게 할 수 있다고 회상했다. –

+0

@ user2564977 웹은 본질 상 무국적이기 때문에. 바운드 데이터는 ViewState에 저장되어야 클라이언트에 전달됩니다. 페이지 크기 및 보안 문제로 인해 수행하려는 작업이 반드시 필요한 것은 아닙니다. 따라서 선택한 항목을 직접 가져 오는 대신 바인딩 된 항목의 ID를 가져온 다음 저장 한 위치 (데이터베이스, 세션, 뷰 상태 등)에서 해당 정보를 다시 가져옵니다. – mason

관련 문제