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

相关文章:

  • 2022-12-23
  • 2021-12-15
  • 2022-02-17
  • 2022-03-01
  • 2021-09-14
  • 2021-08-11
  • 2022-01-30
猜你喜欢
  • 2021-12-11
  • 2021-04-25
  • 2021-10-13
  • 2022-12-23
  • 2021-12-28
  • 2022-01-11
  • 2021-11-08
相关资源
相似解决方案