Domanda

In una datagridview ho databound checkboxcolumns . Ma se selezionare o deselezionare le caselle di controllo multipli, non vengono salvate tutte le modifiche. (Non fa scattare il metodo di proprietà impostata su tutti, forse su ogni secondo). Tuttavia se dopo ogni casella-click, click su un'altra cella (colonna) prima della casella di controllo accanto, quindi tutte le azioni innescheranno i metodi descritti. Così sembra la convalida cella non funziona su una base per cella, ma su una base per colonna (Per la checkboxcolumn). Così come si fa a risolvere questo?

È stato utile?

Soluzione

Trovato la risposta: DataGridView con il problema delle cellule CheckBox

Ma probabilmente più facile alternativa è quella di mettere nel metodo pulsante Salva:

DataGridView.EndEdit();

Altri suggerimenti

Non è davvero chiaro cosa avete provato e che cosa non funziona. Presumo si dispone di un'applicazione Winform e utilizzare uno SqlDataSource per associare una tabella SQL-Server a griglia. C'è un campo booleano (bit) nel database, quindi la griglia genera automaticamente un DataGridViewCheckBoxColumn. Si sta tentando di salvare tutte le modifiche che l'utente ha fatto quando ha fa clic su un pulsante Salva.

Sono tutte queste risposte corrette?

Tutto quello che dovete fare è quello di aggiornare il set di dati / DataTable con il DataAdapter.

Private Sub BtnSaveChanges_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveChanges.Click
    Me.FooTableAdapter.Update(DataSet1.Foo)
End Sub

MSD-Esempio: http://msdn.microsoft.com/en- uso / library / fbk67b6z.aspx

Se le modifiche devono essere salvate direttamente nel database, è possibile gestire il CurrentItemChanged-evento del BindingSource.

Private Sub FooBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FooBindingSource.CurrentItemChanged
     Dim thisDataRow As DataRow = DirectCast(DirectCast(sender, BindingSource).Current, DataRowView).Row
     If thisDataRow.RowState = DataRowState.Modified Then
         Me.FooTableAdapter.Update(thisDataRow)
     End If
End Sub
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top