将枚举绑定到下拉列表框并根据值对其排序

介绍 这篇文章是为那些想要将Web/Window窗体中的DropdownListbox控件绑定到枚举数据类型的人准备的。 背景 有时,我们希望将枚举绑定到Dropdownlistbox,而不是从数据库获取数据,然后将其绑定到Dropdownlistbox。这里我解释了如何绑定您在公共类/实用类代码中定义的枚举。 使

  

用的代码 这真的很简单。让我们看一下下面的代码片段。下面是我的Enum,它定义了PhoneNumberType: 隐藏,复制Code

Public Enum PhoneNumberType As Integer
    [Select] = -1
    Home = 0
    Mobile = 1
    Work = 2
End Enum

现在,要将这样的枚举绑定到您的DropdownListbox,您所需要做的就是创建任何类型的变量,比如SortedList(of TKeys,TValues)、Dictionary等,然后将该变量分配到您的DropdownListbox的DataSource属性。我使用SortedList进行绑定。 隐藏,收缩,复制Code

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _
	Handles MyBase.Load, Me.Load

            If (Not Me.IsPostBack) Then
                Me._presenter.OnViewInitialized()
                Dim phoneTypes As SortedList(Of Integer, String)
                phoneTypes = GetEnumDataSource(Of PhoneNumberType)()
                If Not (phoneTypes Is Nothing) Then
                    drplstPhoneType.DataSource = phoneTypes
                    drplstPhoneType.DataValueField = "Key"
                    drplstPhoneType.DataTextField = "Value"
                    drplstPhoneType.DataBind()
                End If
            End If
End Sub

Public Function GetEnumDataSource(Of T)() As SortedList(Of Integer, String)
            Dim myEnumType As Type = GetType(T)
            Dim returnCollection As SortedList(Of Integer, String) = _
				New  SortedList(Of Integer, String)
            Try
                If myEnumType.BaseType Is GetType([Enum]) Then
                    Dim enumNames() As String = [Enum].GetNames(myEnumType)
                    For i As Integer = 0 To (enumNames.Length - 1)
                        returnCollection.Add(Convert.ToInt32([Enum].Parse_
				(myEnumType, enumNames(i))), enumNames(i))
                    Next
                End If
            Catch ex As Exception
                Return Nothing
            End Try
            Return returnCollection
        End Function

的兴趣点 我在这里所做的是用我的EnumData类型的值和文本填充了SortedList。现在,如果您仔细观察代码片段,我已经解决了另一个问题,即使用条目的值对DropdownListbox进行排序。 由于SortedList能够通过它的“键”对项目进行排序,我在这里所做的是为“键”,我已经使用了枚举的值,为值,我已经使用了枚举的文本。在此之前,情况正好相反。我已经用枚举的文本作为键和枚举的值作为排序列表的值填充了SortedList。在本例中,SortedList将返回按键排序的列表。但因为我想“选择”选项在顶部与-1的值,我所做的不是定义SortedList(字符串,整型),我已经定义了SortedList(整型,字符串),并填充了所有的Enum值作为键的SortedList和文本作为值的SortedList。 历史 2008年5月12日:初始职位 本文转载于:http://www.diyabc.com/frontweb/news326.html

原文地址:https://www.cnblogs.com/Dincat/p/13437528.html