SamuraiJack
SamuraiJack

Reputation: 5539

How to set value of a DataGridView Cell programatically?

I am trying to clear the cell if certain conditions are met. But its not working.

UPDATE

 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave
        Dim laspac As Int16 = DataGridView1.Columns("LASPAC").Index

        If e.ColumnIndex = laspac And DataGridView1.Rows(e.RowIndex).Cells("CType").Value.ToString.Trim() = "B" Then
            Dim B_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells("LASPAC")
            Dim A_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex - 1).Cells("LASPAC")
            If B_LASPAC.Value.ToString.Trim.Length <> 0 Then

                If Convert.ToDecimal(B_LASPAC.Value) + Convert.ToDecimal(A_LASPAC.Value) > 0 Then

                    B_LASPAC.Value = ""


                End If
            End If


        End If
    End Sub

Upvotes: 0

Views: 756

Answers (2)

SamuraiJack
SamuraiJack

Reputation: 5539

I had to use B_LASPAC.EditedFormattedValue.ToString() instead of B_LASPAC.Value.ToString() to get the value of the cell on cell leave and also I realized that I need to end the EditMode of the DataGridView by using DataGridView1.EndEdit() just before I set the new value of the cell B_LASPAC.Value = ""

 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave
        Dim laspac As Int16 = DataGridView1.Columns("LASPAC").Index

        If e.ColumnIndex = laspac And DataGridView1.Rows(e.RowIndex).Cells("CType").Value.ToString.Trim() = "B" Then
            Dim B_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells("LASPAC")
            Dim A_LASPAC As DataGridViewCell = DataGridView1.Rows(e.RowIndex - 1).Cells("LASPAC")
            Dim str As String = DataGridView1.Rows(e.RowIndex).Cells("LASPAC").EditedFormattedValue.ToString()
            If B_LASPAC.EditedFormattedValue.ToString.Trim.Length <> 0 Then
                If Convert.ToDecimal(B_LASPAC.EditedFormattedValue.ToString()) + Convert.ToDecimal(A_LASPAC.EditedFormattedValue.ToString()) > 0 Then

                    DataGridView1.EndEdit()
                    B_LASPAC.Value = ""

                End If
            End If
        End If
    End Sub

Upvotes: 0

Vland
Vland

Reputation: 4262

It's very easy, just pass the RowIndex and ColumnIndex

eg.

Dim rowId = 0
Dim colId = 1

DataGridView1(colId, rowId).Value = "HELLO"

so, in your case... something like

If ... Then
    DataGridView1(e.ColumnIndex, e.RowIndex).Value = ""
End If

Upvotes: 1

Related Questions