title: Can't reload updated list into datagridview
body: <p>I have a datagridview that I am using to display a list of objects.  These objects have several properties which are used to populate the columns of the datagridview.  </p>
  
  <p>To populate the datagridview, I have a function that I pass a reference of the datagridview to.  When the form is created, the form.Load event fires and the external function works perfectly.  However, when I go to reload the datasource using the same function (its actually called by an event for the reload) the datagridview fails to reload with the updated list of objects.</p>
  
  <p>Here's the code for the update function:</p>
  
  <pre><code>Public Function UpdateDataGridView(ByRef datagridView As Windows.Forms.DataGridView) As DataGridView
  
  
      'clear the gridview's previous iteration
      If datagridView Is Nothing Then
          datagridView = New DataGridView
      End If
  
      datagridView.AutoGenerateColumns = False
  
      Dim bindingSource As BindingSource = New BindingSource()
  
      If datagridView.DataSource IsNot Nothing Then
          bindingSource.DataSource = Nothing
          bindingSource.ResetBindings(False)
      End If
  
      bindingSource.DataSource = masterHopperList
      datagridView.DataSource = bindingSource
  
      Return datagridView
  
  End Function
  </code></pre>
  
  <p>I've tried several different ways of populating the datagridview, including using a binding source (which I have above), setting a binding list, and populating each row individually by iterating through the list.  None of them work.</p>
  
  <p>What am I missing to make this work?</p>
  
  <p><strong>Edit:</strong> Here's some of the code snippets for where I'm adding objects to the list</p>
  
  <p>Initializing it at the module level:</p>
  
  <pre><code>Public masterHopperList As New List(Of IHopperItem)
  </code></pre>
  
  <p>merging a temporary list of objects (objects are added to it using the IList(Of T).Add method) to the master list.</p>
  
  <pre><code>Public Function concatHopperArray(ByVal masterHopperList As List(Of IHopperItem), ByVal hopperListToAdd As List(Of IHopperItem)) As List(Of IHopperItem)
  
      'merges two IHopperItem lists together
  
      'if the master is empty, then we can just return the "ToAdd" list
      If masterHopperList.Count = 0 Then
          Return hopperListToAdd
      End If
  
      'alternatively, if the toAdd array is empty or zero then we can just grab the master and return it
      If hopperListToAdd.Count = 0 Then
          Return masterHopperList
      End If
  
      'barring those then we can just merge the two lists
      masterHopperList.AddRange(hopperListToAdd)
  
      Return masterHopperList       
  
  End Function
  </code></pre>