Tengo el siguiente código que actualiza el datagrid en el formulario después de la actualización a la base de datos. Mi pregunta es ¿por qué debo tener claro el origen de datos y, a continuación, vuelva a agregar para conseguir que los cambios de pantalla. Yo creo que el método de actualización haría esto, pero me parece que no puede conseguir que funcione. Es allí una manera más eficiente para actualizar el datagrid en lugar de restablecer el origen de datos?

Public Sub addPlan(ByVal planname, ByVal plannumber)
    Dim planinfo As New changeDatabase(planname, plannumber, planAdapter)

    planinfo.addPlan()
    Form1.DataGridView1.EndEdit()

    Form1.DataGridView1.DataSource = ""
    Form1.DataGridView1.DataSource = planAdapter.GetData()
End Sub

2 Comentarios

  1. 5

    Trate de crear una explícita BindingSource y asignar un origen de datos para, a continuación, establezca el DataGridView‘s de la propiedad DataSource a la BindingSource instancia.

    La BindingSource del objeto ResetBinding método hará que el DataGridView a releer todos los elementos de la lista y actualizar todos los valores mostrados.

    Dim bindingSource As BindingSource
    bindingSource = New BindingSource()
    bindingSource.DataSource = planAdapter.GetData()
    Form1.DataGridView1.DataSource = bindingSource
    
    bindingSource.ResetBindings(false)

    Nota: al Pasar false significa que sólo han cambiado los valores en el origen de datos original, true significa que el esquema de los datos ha cambiado.

  2. 1

    El código siguiente muestra una forma para hacerlo que funcione:

    Protected WithEvents myWordClueList As WordClueList
    Protected gridBindingSource As BindingSource
    
    Public Sub New()
    
        ' This call is required by the designer.
        InitializeComponent()
    
        myWordClueList = New WordClueList()
    
        myWordClueList.Add(New WordCluePair With {.Word = "Eden", .Clue = "First garden"})
        myWordClueList.Add(New WordCluePair With {.Word = "Fears", .Clue = "Aggregate of negative emotions"})
    
        ' Instantiate a binding source for the GridView
        gridBindingSource = New BindingSource With {.DataSource = myWordClueList}
        WordClueGrid.DataSource = gridBindingSource
    
    End Sub

    El truco es usar un Enlace de objeto de Origen.

    Para actualizar el GridView cuando se realizan cambios en el origen de datos, llame a la ResetBindings método de su objeto BindingSource.

            myWordClueList.OrderBy(Function(pairRow As WordCluePair) pairRow)
            gridBindingSource.ResetBindings(False)

Dejar respuesta

Please enter your comment!
Please enter your name here