Using a BindingSource component to bind a list to a DataGridView control : List « Data Structure « VB.Net

Using a BindingSource component to bind a list to a DataGridView control

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing
Imports System.Windows.Forms

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private WithEvents changeItemBtn As New Button()

    Private customersDataGridView As New DataGridView()

    Private WithEvents customersBindingSource As New BindingSource()

    Public Sub New()
        Me.changeItemBtn.Text = "Change Item"
        Me.changeItemBtn.Dock = DockStyle.Bottom

        customersDataGridView.Dock = DockStyle.Top
        Me.Size = New Size(800, 200)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Me.Load
        Dim customerList As List(Of DemoCustomer) = New List(Of DemoCustomer)
        customerList.Add(New DemoCustomer())
        customerList.Add(New DemoCustomer())
        customerList.Add(New DemoCustomer())

        Me.customersBindingSource.DataSource = customerList
        Me.customersDataGridView.DataSource = Me.customersBindingSource
    End Sub

    Private Sub changeItemBtn_Click(ByVal sender As Object, ByVal e As EventArgs)Handles changeItemBtn.Click
        Dim customerList As List(Of DemoCustomer) = CType(Me.customersBindingSource.DataSource, List(Of DemoCustomer))

        customerList(0).CompanyName = "A"


    End Sub

    <STAThread()> _
    Shared Sub Main()
        Application.Run(New Form1())
    End Sub
End Class

Public Class DemoCustomer
    Private idValue As Guid = Guid.NewGuid()
    Private customerName As String = String.Empty
    Private companyNameValue As String = String.Empty

    Sub New()
        customerName = "no data"
        companyNameValue = "no data"
    End Sub

    Public ReadOnly Property ID() As Guid
            Return Me.idValue
        End Get
    End Property

    Public Property CompanyName() As String
            Return Me.companyNameValue
        End Get

        Set(ByVal value As String)
            Me.companyNameValue = Value
        End Set
    End Property
End Class


Related examples in the same category

1.List Range operation
2.Check the List.Capacity before and after adding elements
3.Does List contain a certain element
4.Add element to List at position of 2
5.Remove an element from List
6.Trim down extra capacity from List
7.Clear a List
8.Uses a cursor to step through the message queues and list the public queues on the network.
9.Using Order By to sort a list of words alphabetically
10.Using Order By to sort a list of words by length
11.Using Group By to partition a list of words by first letter
12.Converting ToList
13.Using a Where clause to find all projectList that are in stock and cost more than 3.00 per unit
14.Using Take to get the first 3 orders from employeeList
15.Using Payment By to sort a list of projectList by units in stock from highest to lowest
16.Using Except to do minus between two lists
17.Use Action<(Of <(T>)>) delegate to print the contents of a List<(Of <(T>)>) object.
18.List the Unicode code point of each of the control characters.
19.Create a SortedList using the default comparer.
20.Create a SortedList using the specified case-insensitive comparer.
21.Create a SortedList using the specified CaseInsensitiveComparer,
22.Create a SortedList using the StringComparer.InvariantCultureIgnoreCase value.
23.Implements a TextWriterTraceListener named myWriter to write to the console screen.
24.All three overloads of the CopyTo method in List<(Of <(T>)>)
25.Create a fixed-size wrapper around an ArrayList.
26.Synchronize an ArrayList, determine if an ArrayList is synchronized and use a synchronized ArrayList.
27.LinkedListNode<(Of <(T>)>), adds it to a LinkedList<(Of <(T>)>), tracks values of its properties as the LinkedList<(Of <(T>)>) changes.
28.What is the different between the Count and Capacity
29.Get the fourth element
30.List(T) Class is a strongly typed list of objects that can be accessed by index
31.Add strings to List of String and use For Each loop to show each item
32.Insert in the middle of a List
33.Remove an element from List
34.Trim a List
35.Clear a List
36.Convert element in List to string
37.List Linq operator: Any
38.List Linq operator: First
39.List Linq operator: Where
40.Create List(Of T) class that contains elements copied from the specified collection
41.Add another list to the current list
42.Get range from a List
43.Create List(Of T) class that is empty and has the specified initial capacity.
44.List(T).BinarySearch Method searches sorted List(Of T) using the default comparer
45.List(T).ConvertAll(TOutput) Method converts List(Of T) to another type
46.List(T).CopyTo Method copies a range of elements from the List(Of T) to one-dimensional array
47.List(T).ForEach Method Performs the specified action on each element of the List(Of T).
48.List(T).IndexOf Method searches for object and returns the zero-based index
49.List(T).LastIndexOf Method searches for the specified object and returns the zero-based index of the last occurrence
50.List(T).Reverse Method reverses the order of the elements in the specified range.
51.Add after a LinkedListNode
52.Create LinkedList(Of T) class that is empty.
53.LinkedListNode(T) Class represents a node in a LinkedList(Of T).
54.Copies the ListDictionary to an array with DictionaryEntry elements
55.ListDictionary.Add Method adds an entry with the specified key and value into the ListDictionary.
56.ListDictionary.Contains Method tells whether the ListDictionary contains a specific key.
57.ListDictionary.CopyTo Method copies the ListDictionary entries to a one-dimensional Array
58.LinkedListNode(T) Class represents a node in a LinkedList(Of T). This class cannot be inherited.
59.Check the Capacity and Count
60.Check the existance of an item with Contains method
61.Get the item by index
62.Remove a range
63.Insert range