2013-07-13 3 views
2

드롭 다운 목록에서 선택한 항목에서 카테고리 ID를 가져 오려고합니다. foreach 루프 (목록 사용)로 드롭 다운 목록을 채 웁니다. 선택한 ID를 가져 오는 캐스팅이 작동하지 않습니다.

내가 ID 얻기 위해 사용하고있는 코드입니다 :

protected void dropDownCategories_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DropDownList ddl = (DropDownList)sender; 
     Category category = (Category)ddl.Items[ddl.SelectedIndex]; 
     int CatID = category.CategoryID; 
    } 

위의 코드는 작동하지 않습니다, 그리고 나에게이 오류 제공 :

Error 2 Cannot convert type 'System.Web.UI.WebControls.ListItem' to 'XXXXXX.classes.Category' 

을하지만 난을 사용할 때 목록 상자에 비슷한 코드가 있으면 아래 코드가 작동합니다!

protected void listBoxCategories_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ListBox lb = (ListBox)sender; 
     Category category = (Category)lb.Items[lb.SelectedIndex]; 
     int CatID = category.CategoryID; 
    } 

이 코드는 왜 드롭 다운 목록이 아닌 목록 상자에서 작동합니까?

감사합니다.

+0

둘 다 같은 방식으로 작성하고 있습니까? – MEYWD

+0

예, 목록 상자가있는 C# 양식 응용 프로그램에 있고 그 드롭 다운 상자는 ASP에 있습니다 ... 그게 중요합니까? – Swag

답변

1

System.Web.UI.WebControls.DropDownList은 해당 텍스트 속성과 값 속성을 가진 ListItem의 목록 인 Items 속성으로 ListItemCollection을가집니다.

System.Windows.Forms.ListBox는 기본적으로 개체를 당신이, 당신이 목록 항목을 추가하는 드롭 다운 목록에 항목을하는 '수 추가 그래서

의 목록의 항목 재산권, 같은 ObjectCollection있는 동안 귀하의 유형으로 변환해야합니다, 나는 당신이 각 항목에 무엇을 저장하고 있는지 알고 코드를 작성하는 귀하의 드롭 다운을 참조해야합니다.

그러나 목록 상자에 항목을 추가하면 개체가 추가되므로 각 항목에 클래스 인스턴스를 추가하면 캐스팅을 통해 다시 변환 할 수 있습니다.

+0

카테고리 모음 (예 : List )을 가지고 있다고 가정하면 위의 코드를 "var category = categories.Where (c => c.CategoryID == lb.Items [ lb.SelectedIndex] .Value) .SingleOrDefault(); " 이것은 분명히 당신이 드롭 다운리스트에 어떻게 묶 였는지에 달려 있습니다. – pwdst

관련 문제