Click here to Skip to main content
Licence CPOL
First Posted 16 Mar 2008
Views 63,982
Downloads 608
Bookmarked 25 times

Binding a generic collection to a DataGridView via Visual Basic 2008 code

By | 16 Mar 2008 | Article
Binding a generic collection to a DataGridView in VB 2008, with a few lines of code.
 
Part of The SQL Zone sponsored by
See Also

Introduction

I needed to bind a DataGridView to a generic collection of custom classes, in an application written in Visual Basic 2008. The objective to reach was that, whenever editing, adding, or deleting items from the DataGridView, the collection gets updated and vice versa.

Using the Code

The .NET Framework exposes a very useful object called BindingSource. This can be used also at design-time, but in this particular case, you’re not allowed to bind objects which are not defined as classes. In my own situation, I had to instantiate a collection inside a module, so this is a scenario which is not reachable at design-time using a BindingSource, but it is by writing a few lines of code. Let’s suppose we have the typical example class for learning, which is the Person class:

Public Class Person
    Private _lastName As String
    Private _name As String

    Public Property LastName() As String
        Get
            Return _lastName
        End Get
        Set(ByVal value As String)
            _lastName = value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Sub New()

    End Sub

    Public Sub New(ByVal name As String, ByVal lastName As String)
        _name = name
        _lastName = lastName
    End Sub
End Class

Now, let’s suppose we need to instantiate a collection of Person objects. In my own situation, this happens inside a Module, but in the example, it can happen inside the Sub Main of a Console application. This is the code:

Dim People As New List(Of Person)

The next step is to instantiate a BindingSource object and then assign its DataSource property to the above collection:

Dim PeopleBindingSource As New BindingSource
PeopleBindingSource.DataSource = People

In the Form containing the DataGridView, assign its DataSource property like this:

PeopleDataGridView.DataSource = PeopleBindingSource

Points of Interest

This kind of data-binding allows to simultaneously update the DataGridView and the bound collection, whichever of the two objects you’re going to edit. Moreover, in this particular case, if the AutoGenerateColumns property of the DataGridView control is set to True, the .NET Framework automatically generates as many columns as there are properties in the bound class (in our case, two columns, Name and LastName). Obviously, if you write code like the one shown above, you don’t need to set any data-binding property at design-time. I hope this article can be useful since on the Internet I found only articles about collections data-binding to a DataGridView where data is not editable, or the solution is only available in C#.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Alessandro Del Sole

Other

Italy Italy

Member

I'm a Microsoft Visual Basic MVP. I'm an Italian .NET developer and I write articles and books about Visual Basic, Visual Studio LightSwitch, and the .NET technologies.
 
Check out my blog at: http://community.visual-basic.it/AlessandroEnglish

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 PinmemberMitchell McKee14:56 14 May '11  
Questionhow to modify grid at runtime Pinmember73amit23:50 23 Apr '08  
AnswerRe: how to modify grid at runtime PinmemberAlessandro Del Sole3:32 24 Apr '08  
GeneralRe: how to modify grid at runtime PinmemberNickolais8:12 13 Jun '08  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120517.1 | Last Updated 16 Mar 2008
Article Copyright 2008 by Alessandro Del Sole
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid