Цвет строки DataGridView не изменяется при повторном открытии той же формы - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать простую систему инвентаризации, которая отображается из ограниченных данных DataGridView. Я хочу изменить цвет строки указанного элемента c, если элемент меньше минимального требуемого предела.

Когда я открываю форму с помощью DatagridView, цвета строки каждого элемента успешно изменяются на красный, если он меньше минимальной суммы. Однако когда я закрываю форму и открываю ее снова, цвет строки не изменяется.

Я пытаюсь заменить текст столбца, если запас ниже требования, чтобы проверить, работает ли функция, и она сделала изменить текст ячейки, даже если я открою и закрою форму, но не цвет строки затронутых строк. Я попытался вручную загрузить строки в DataGridView, не используя SqlDataAdapter и DataGridView, и он прекрасно работает, даже если я снова открываю и закрываю форму.

Но я хочу воспользоваться * Функция 1008 *, в которой я создаю, обновляю и удаляю элементы в самом DataGridView при нажатии кнопки обновления. Вот мой код:

Итак, мой вопрос: почему пользовательские цвета строк DataGridView не меняются даже при повторном открытии той же формы?

    Dim dataAdapter As SqlDataAdapter
    Dim commandBuilder As SqlCommandBuilder
    Dim dataSet As DataSet

    Private Sub Inventory_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            Dim query As String = "SELECT * FROM Inventory"
            dataSet = New DataSet

            dataAdapter = New SqlDataAdapter(query, SQLCon)
            dataAdapter.Fill(dataSet)

            DGVInventory.DataSource = dataSet.Tables(0)

            'Change the row color of insufficient item quantity
            For row As Integer = 0 To DGVInventory.Rows.Count - 1
                If DGVInventory.Rows(row).Cells(2).Value < DGVInventory.Rows(row).Cells(3).Value Then
                    DGVInventory.Rows(row).DefaultCellStyle.BackColor = Color.Red
                    DGVInventory.Rows(row).DefaultCellStyle.ForeColor = Color.White
                End If
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Inventory_Load() Function Error")
        End Try
    End Sub

    Private Sub BtnSaveChanges_Click(sender As Object, e As EventArgs) Handles BtnSaveChanges.Click
        Try
            commandBuilder = New SqlCommandBuilder(dataAdapter)
            dataAdapter.Update(dataSet, "Inventory")
            MessageBox.Show("Database has been updated.", "Update Successful!")
        Catch ex As Exception
            MessageBox.Show(ex.Message, "BtnSaveChanges_Click() Function Error")
        End Try
    End Sub
...