2009-06-08 5 views
0

두 개의 사용자 지정 ListItem을 추가하기 위해 DropDownList를 상속하고 있습니다. 첫 번째 항목은 "Select one ..."이고 두 번째 항목은 끝에 추가됩니다. 값은 "Custom"입니다.DropDownList 상속 및 DataSourceObject를 사용하여 사용자 지정 값 추가

나는 데이터 바인딩을 무시하고 다음 코드를 사용

Dim data As List(Of ListItem) = CType(DataSource, List(Of ListItem)) 
    data.Insert(0, New ListItem("Select one...", SelectOneListItemValue)) 
    If DisplayCustomOption Then 
     data.Insert(data.Count, New ListItem("Custom", CustomListItemValue)) 
    End If 
    DataSource = data 
    MyBase.DataBind() 

문제는 데이터 소스가을 ListItem의 목록 이외의 경우이 코드가 작동하지 않습니다이다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

당신은 다음을 수행 할 수있는 경우 데이터 소스는 항상은 IList 상속 가정, 만들 수

답변

0

: 물론

Dim data As IList = CType(DataSource, IList) 
data.Insert(0, New ListItem("Select one...", SelectOneListItemValue)) 
' And so on... 

,이 데이터 소스가 무엇이든, 당신이 추가 할 수 있다고 가정 ListItem 형식의 개체 그러나 이것은 당신이 필요로하는 것을 위해 충분히 일반적 일 수 있습니다.

0

데이터 바인딩 만 그대로두고 DataBound 이벤트 처리기에 특수 항목을 추가 할 수 있습니다.

Protected Sub MyDropDownList_DataBound(sender As Object, e As EventArgs) _ 
    Handles MyDropDownList.DataBound 

     MyBase.Items.Insert(0, New ListItem("Select One...", SelectOneListItemValue)) 

     If DisplayCustomOption Then 
      MyBase.Add(New ListItem("Custom", Custom)) 
     End If 
End Sub 

은 (당신이 구문을 조정해야 할 수 있도록 내 VB.NET은 제한)