Hi Guys,

I am populating my datagridview like this:

Code:
PeopleTable = GetNewGameSheet(classid)

            dgvgame.Columns.Clear()

            Me.PeopleBindingSource.DataSource = PeopleTable
            dgvgame.DataSource = Me.PeopleBindingSource
            PeopleBindingNavigator.BindingSource = PeopleBindingSource

            With Depositbtn
                .HeaderText = "Deposit"
                .UseColumnTextForButtonValue = True
                .Text = "Deposit"
                .Name = "Deposit"
            End With

            With Withdrawalbtn
                .HeaderText = "Withdrawal"
                .UseColumnTextForButtonValue = True
                .Text = "Withdrawal"
                .Name = "Withdrawal"
            End With

            With comboboxcolumn
                .DataPropertyName = "jobid"
                .DataSource = RetrieveAllJobs()
                .ValueMember = "JobID"
                .DisplayMember = "Description"
                .HeaderText = "Job"
                .DisplayIndex = 4
                '.Name = "JobID"
                '.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                '.ReadOnly = True
            End With
          
            With dgvgame
                .Columns("PeopleId").Visible = False
                .Columns("ClassId").Visible = False
                .Columns("AccountId").Visible = False
                .Columns("JobId").Visible = False

                .Columns("surname").HeaderText = "Surname"
                .Columns("firstname").HeaderText = "First Name"
                .Columns("balance").HeaderText = "Balance"

                .Columns("Day1").HeaderText = "Day 1"
                .Columns("Day1").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                .Columns("Day2").HeaderText = "Day 2"
                .Columns("Day2").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                .Columns("Day3").HeaderText = "Day 3"
                .Columns("Day3").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                .Columns("Day4").HeaderText = "Day 4"
                .Columns("Day4").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                .Columns("Day5").HeaderText = "Day 5"
                .Columns("Day5").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells


                .Columns.Add(Depositbtn)
                .Columns.Add(Withdrawalbtn)
                .Columns.Add(comboboxcolumn)

            End With
Code:
Private Function GetNewGameSheet(ByVal classid As Integer) As DataTable

        Using con As New SqlConnection(dbpath)

            Dim command As New SqlCommand("SELECT peopleid,surname,firstname,balance,accountid,classid,cast(6 as bigint) as jobid,CAST(0 as bit) Day1,CAST(0 as bit) Day2, CAST(0 as bit) Day3, CAST(0 as bit) Day4, CAST(0 as bit) Day5 FROM v_new_gamesheet WHERE (ClassId=@ClassId) ORDER BY surname", con)
            command.Parameters.AddWithValue("@ClassId", classid)

            PeopleAdapter.SelectCommand = command
            PeopleTable = New DataTable
            PeopleAdapter.AcceptChangesDuringFill = False
            PeopleAdapter.Fill(PeopleTable)
            PeopleTable.Columns.Add("Wage")

            Return PeopleTable

        End Using


    End Function
then on the cellvaluechanged event of the datagridview I have thsi code:

what this does is, if a job is selected in the jobid combobox i get the wage attached to that job and for each checked column i add the wage up.

Code:
Private Sub dgvgame_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvgame.CellValueChanged
        Dim balance As Decimal = 0
        Dim wage As Decimal = 0
        Using con As New SqlConnection(dbpath)

    
            If (dgvgame.Columns(e.ColumnIndex).Name = "Day1") Or (dgvgame.Columns(e.ColumnIndex).Name = "Day2") Or (dgvgame.Columns(e.ColumnIndex).Name = "Day3") Or (dgvgame.Columns(e.ColumnIndex).Name = "Day4") Or (dgvgame.Columns(e.ColumnIndex).Name = "Day5") Then
                If (e.RowIndex >= 0) Then
                    Dim jobID As Integer = CInt(If(IsDBNull(dgvgame.Rows(e.RowIndex).Cells("JobID").Value), 0, dgvgame.Rows(e.RowIndex).Cells("JobID").Value))

                    If (jobID > 0) Then
                        Dim wagecmd As New SqlCommand("SELECT Wage FROM Jobs WHERE JobID = @JobID;", con)

                        wagecmd.Parameters.AddWithValue("@JobID", jobID)

                        con.Open()
                        wage = CDec(wagecmd.ExecuteScalar())
                        con.Close()

                    End If

                    If (CBool(dgvgame.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) = True) Then

                        dgvgame.Rows(e.RowIndex).Cells("Wage").Value = CDec(If(IsDBNull(dgvgame.Rows(e.RowIndex).Cells("Wage").Value), 0, dgvgame.Rows(e.RowIndex).Cells("Wage").Value)) + wage

                    Else

                        If (CDec(dgvgame.Rows(e.RowIndex).Cells("Wage").Value) > 0) Then
                            dgvgame.Rows(e.RowIndex).Cells("Wage").Value = CDec(dgvgame.Rows(e.RowIndex).Cells("Wage").Value) - wage
                        End If

                    End If

                End If
            End If

        End Using
    End Sub
now this all works fine when I run my save code which i am posting in the next thread the value in my datatable for the Day1 column etc is true if I check it