Hi,
I have seen variations of this question asked on several different posts, but either the fix has either been irrelevant to my particular situation or the question has gone unanswered. I have created a simplified example that you can run on your own computer, so as to easily demonstrate my problem.
I have a simple class "dog" which contains a property "Breed" of enum type "DogBreeds". I wish to display this value in a GridView combo box, but using more user-friendly text than the enum values.
This is my data class:
Public Class Dog Private dmName As String Private dmColour As String Private dmBreed As DogBreeds Public Sub New(ByVal _name As String, ByVal _colour As String, ByVal _breed As DogBreeds) MyBase.New() dmName = _name dmColour = _colour dmBreed = _breed End Sub Public Property Name() As String Get Return dmName End Get Set(ByVal value As String) dmName = value End Set End Property Public Property Colour() As String Get Return dmColour End Get Set(ByVal value As String) dmColour = value End Set End Property Public Property Breed() As DogBreeds Get Return dmBreed End Get Set(ByVal value As DogBreeds) dmBreed = value End Set End PropertyEnd ClassAnd my Enum:
Public Enum DogBreeds Staff Husky GShepEnd EnumTo demonstrate the problem, create a GridView on a form called "dgv" and add the following code:
'Add some example data dogs = New List(Of Dog)dogs.Add(New Dog("Sacha", "Brown", DogBreeds.Staff))dogs.Add(New Dog("Nimbus", "Black/Brown", DogBreeds.GShep))dogs.Add(New Dog("Chinook", "White", DogBreeds.Husky))'Set the grid data source:dgv.DataSource = dogs'Create the data source for the combo column, comprosed of a column of the enum and a column of the' "friendly" string represetion for that enum valueDim dtBreeds As New DataTabledtBreeds.Columns.Add("BreedEnum", GetType(DogBreeds))dtBreeds.Columns.Add("BreedName", GetType(String))dtBreeds.Rows.Add(DogBreeds.GShep, "German Sheppard")dtBreeds.Rows.Add(DogBreeds.Husky, "Icelandic Husky")dtBreeds.Rows.Add(DogBreeds.Staff, "Staffordshire Bull Terrier")'Set the column display and value members and the data source for the comboWith DirectCast(dgv.Columns("Breed"), GridViewComboBoxColumn) .DisplayMember = "BreedName" .ValueMember = "BreedEnum" .DataSource = dtBreedsEnd WithRun the form. All the combos are blank, but when you click on a combo cell, the correct value is displayed, but disappears again when focus is lost from the cell, so it looks like a display bug. I have successfully used this method on a DataGrid, so not sure why it does not work here.
Any help much appreciated
Shane