為了解決這種情形,比較快的方式就是直接改掉 DropDownList,在控制項中處理這種無法繫結的情形才是最終的解決方案。那我們該從何處下手呢?想想通常 DropDownList 控制項做資料繫結的是什麼屬性呢?沒錯,就是 SelectedValue 屬性,那我們就從覆寫 SelectedValue 屬性下手,改寫 SelectedValue 屬性的 Set 動作;當寫入 SelectedValue 屬性時的新值不存在 Items 集合中時,就直接設定其 SelectedIndex = -1。這樣就可以很簡單決解掉 DropDownList 繫結錯誤的問題了。
1
Public
Class
TBDropDownList
2 Inherits DropDownList
3
4 ' '' <summary>
5 ' '' 覆寫 SelectedValue 屬性。
6 ' '' </summary>
7 Public Overrides Property SelectedValue() As String
8 Get
9 Return MyBase .SelectedValue
10 End Get
11 Set ( ByVal value As String )
12 Dim oItem As ListItem = Me .Items.FindByValue(value)
13 If (oItem Is Nothing ) Then
14 Me .SelectedIndex = - 1 ' 當 Items 不存在時
15 Else
16 MyBase .SelectedValue = value
17 End If
18 End Set
19 End Property
20
21 End Class
2 Inherits DropDownList
3
4 ' '' <summary>
5 ' '' 覆寫 SelectedValue 屬性。
6 ' '' </summary>
7 Public Overrides Property SelectedValue() As String
8 Get
9 Return MyBase .SelectedValue
10 End Get
11 Set ( ByVal value As String )
12 Dim oItem As ListItem = Me .Items.FindByValue(value)
13 If (oItem Is Nothing ) Then
14 Me .SelectedIndex = - 1 ' 當 Items 不存在時
15 Else
16 MyBase .SelectedValue = value
17 End If
18 End Set
19 End Property
20
21 End Class