首页  ·  知识 ·  编程语言
讓DropDownListDataBind不再發生錯誤
jeff377  http://www.dotblogs.com.tw/jeff377/  VB  编辑:dezai  图片来源:网络
DropDownList 在執行 DataBind 動作時,若 Items 集合中不存在繫結的欄位值時會發生 Exception。不過 DropDownList 這種設計方式常會造成困擾,很多時候繫結

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

為了解決這種情形,比較快的方式就是直接改掉 DropDownList,在控制項中處理這種無法繫結的情形才是最終的解決方案。那我們該從何處下手呢?想想通常 DropDownList 控制項做資料繫結的是什麼屬性呢?沒錯,就是 SelectedValue 屬性,那我們就從覆寫 SelectedValue 屬性下手,改寫 SelectedValue 屬性的 Set 動作;當寫入 SelectedValue 屬性時的新值不存在 Items 集合中時,就直接設定其 SelectedIndex = -1。這樣就可以很簡單決解掉 DropDownList 繫結錯誤的問題了。

view plaincopy to clipboardprint?
Public Class TBDropDownList  
        Inherits DropDownList  
 
        '''

  
        ''' 覆寫 SelectedValue 屬性。  
        '''
  
        Public Overrides Property SelectedValue() As String 
            Get 
                Return MyBase.SelectedValue  
            End Get 
            Set(ByVal value As String)  
                Dim oItem As ListItem = Me.Items.FindByValue(value)  
                If (oItem Is Nothing) Then 
                    Me.SelectedIndex = -1 '當 Items 不存在時   
                Else 
                    MyBase.SelectedValue = value  
                End If 
            End Set 
        End Property 
 
    End Class 

 

本文作者:jeff377 来源:http://www.dotblogs.com.tw/jeff377/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读