DropDownList 在執行 DataBind 動作時,若 Items 集合中不存在繫結的欄位值時會發生 Exception。不過 DropDownList 這種設計方式常會造成困擾,很多時候繫結的欄位值無法預期,而且 DropDownList 控制項在這種狀況釋出的錯誤在頁面程式碼中無法處理。

為了解決這種情形,比較快的方式就是直接改掉 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 NothingThen
14                     Me.SelectedIndex = -1 '當 Items 不存在時 
15                 Else
16                     MyBase.SelectedValue = value
17                 End If
18             End Set
19         End Property
20 
21     End Class
posted on 2007-12-04 00:32  jeff377  阅读(2368)  评论(10编辑  收藏  举报