By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,224 Members | 1,120 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,224 IT Pros & Developers. It's quick & easy.

DataGridView Binding with a Class

P: n/a
Hello

I have binding a class to a DataGridView and this class have a property from
another class and this i want binding to a DataGridViewComboBoxColumn. So
when i change a item in the Combo and leave this cell, then i have a error
(cannot convert String to cCountry).

I think the problem is the DataPropertyName in my
DataGridViewComboBoxColumn. Can anybody say me what is wrong?

Here my Code:

Public Class Form1

Private cClients As New System.Collections.Generic.List(Of cClient)
Private cCountries As New System.Collections.Generic.List(Of cCountry)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

With cCountries
.Add(New cCountry("CH", "Switzerland"))
.Add(New cCountry("D", "Germany"))
.Add(New cCountry("I", "Italy"))
.Add(New cCountry("F", "France"))
End With

With cClients
.Add(New cClient("Name1", "FirstName1", cCountries(0)))
.Add(New cClient("Name2", "FirstName2", cCountries(1)))
.Add(New cClient("Name3", "FirstName3", cCountries(2)))
.Add(New cClient("Name4", "FirstName4", cCountries(3)))
End With

DataGridView1.AutoGenerateColumns = False
DataGridView1.AutoSize = True
DataGridView1.DataSource = cClients

Dim column As DataGridViewColumn = New DataGridViewTextBoxColumn()
column.DataPropertyName = "Name"
column.Name = "Name"
DataGridView1.Columns.Add(column)

column = New DataGridViewTextBoxColumn()
column.DataPropertyName = "FirstName"
column.Name = "FirstName"
DataGridView1.Columns.Add(column)

dataGridView1.Columns.Add(CreateComboBox)

End Sub

Private Function CreateComboBox() As DataGridViewComboBoxColumn
Dim combo As New DataGridViewComboBoxColumn()
combo.DataSource = cCountries
combo.DataPropertyName = "Country"
combo.Name = "Country"
Return combo
End Function

End Class

Public Class cClient

Public Sub New(ByVal Name As String, ByVal FirstName As String, ByVal
Country As cCountry)
sName = Name
sFirstName = FirstName
oCountry = Country
End Sub

Private sName As String
Public Property Name() As String
Get
Return sName
End Get
Set(ByVal Value As String)
sName = Value
End Set
End Property

Private sFirstName As String
Public Property FirstName() As String
Get
Return sFirstName
End Get
Set(ByVal Value As String)
sFirstName = Value
End Set
End Property

Private oCountry As cCountry
Public Property Country() As cCountry
Get
Return oCountry
End Get
Set(ByVal Value As cCountry)
oCountry = Value
End Set
End Property

End Class

Public Class cCountry

Public Sub New(ByVal Code As String, ByVal Title As String)
sCode = Code
sTitle = Title
End Sub

Private sCode As String
Public Property Code() As String
Get
Return sCode
End Get
Set(ByVal Value As String)
sCode = Value
End Set
End Property

Private sTitle As String
Public Property Title() As String
Get
Return sTitle
End Get
Set(ByVal Value As String)
sTitle = Value
End Set
End Property

Public Overrides Function ToString() As String
Return Me.Title
End Function

End Class
May 2 '06 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.