Salve a tutti.
Ho realizzato un datagridview che ho popolato da codice con alcuni campi della tabella "rifiuti".
Uno di questi campi, "scarica" è in forma booleana e quindi rappresentato da una checkbox. All'apertura della form contenente il datagridview tutti i record caricati hanno il campo "scarica" su false.
Quello che vorrei realizzare è un sistema di conteggio istantaneo: ogni volta che seleziono "scarica", il campo associato "quantita" viene utilizzato per un conteggio visualizzato in una textbox. Ogni volta che seleziono o deseleziono una checkbox dovrei visualizzare questo conteggio che rispettivamene si incrementa o decrementa.
Questo è il codice che ho provato ad utilizzare:
Imports System.Data.OleDb
Public Class Scaricorifiuti
Public Shared cnstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Federico\Desktop\corsini.accdb;Per sist Security Info=False;"
Private Sub Scaricorifiuti_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cn As New OleDbConnection(cnstring)
Dim sql As String = "SELECT codice, data, quantita, scarica FROM rifiuti WHERE tipologia = 'cenere leggera' ORDER BY id"
Dim query As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, cn)
Dim dt As DataTable = New DataTable()
query.Fill(dt)
DataGridView1.AutoGenerateColumns = True
DataGridView1.DataSource = dt
End Sub
Private Sub aggiorna(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArg s) Handles DataGridView1.CellMouseClick
Dim dt As DataTable = DataGridView1.DataSource
Dim i As Integer
Dim count As Integer
For i = 0 To DataGridView1.RowCount - 2
If dt.Rows(i).Item(3) = True Then
count = count + dt.Rows(i).Item(2)
End If
Next
TextBox1.Text = count
End Sub
End Class
Utilizzando questo codice però avviene una cosa strana: se seleziono una checkbox il conteggio non varia, ma se seleziono un'ulteriore checkbox, il conteggio si incrementa ma con la quantità della selezione precedente; funziona praticamente in ritardo, ovvero incrementa o decrementa in base alla selezione o deselezione precedente.
La sub aggiorna è associata all'evento cellmouseclick, ma ho provato anche altri eventi tipo cellclick, cellcontentclick, selectionchanged ecc. Per tutti si comporta nell'analogo modo.
Spero di essere stato chiaro.
Aspetto vostri consigli
Grazie in anticipo
Federico