Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 再次打开同一表单时,DataGridView行颜色不会更改_Vb.net_Datagridview - Fatal编程技术网

Vb.net 再次打开同一表单时,DataGridView行颜色不会更改

Vb.net 再次打开同一表单时,DataGridView行颜色不会更改,vb.net,datagridview,Vb.net,Datagridview,我正在尝试创建一个简单的清单系统,它是从数据绑定的DataGridView显示的。如果某个项目小于所需的最小限制,我想更改特定项目的行颜色 当我使用DatagridView打开表单时,如果每个项目的行颜色小于最小值,则该行颜色将成功更改为红色。但是,当我关闭窗体并再次打开它时,行的颜色没有改变 如果库存低于检查函数是否工作的要求,并且即使我打开和关闭表单,但没有更改受影响行的行颜色,它也会更改单元格的文本,那么我会尝试替换列的文本。 我已尝试手动将行加载到DataGridView中,而不是使用S

我正在尝试创建一个简单的清单系统,它是从数据绑定的DataGridView显示的。如果某个项目小于所需的最小限制,我想更改特定项目的行颜色

当我使用DatagridView打开表单时,如果每个项目的行颜色小于最小值,则该行颜色将成功更改为红色。但是,当我关闭窗体并再次打开它时,行的颜色没有改变

如果库存低于检查函数是否工作的要求,并且即使我打开和关闭表单,但没有更改受影响行的行颜色,它也会更改单元格的文本,那么我会尝试替换列的文本。 我已尝试手动将行加载到DataGridView中,而不是使用
SqlDataAdapter
还有DataGridView,即使我再次打开和关闭表单,它也可以正常工作

但是我想利用
SqlDataAdapter.Update()
函数,当单击Update按钮时,在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
Dim dataAdapter作为SqlDataAdapter
将commandBuilder设置为SqlCommandBuilder
将数据集作为数据集
私有子目录加载(发送者作为对象,e作为事件参数)处理MyBase.Load
尝试
Dim查询为String=“从库存中选择*
数据集=新数据集
dataAdapter=新的SqlDataAdapter(查询,SQLCon)
dataAdapter.Fill(数据集)
DGVInventory.DataSource=dataSet.Tables(0)
'更改物料数量不足的行颜色
对于作为整数的行=0到DGVInventory.Rows.Count-1
如果dgVintory.Rows(row).Cells(2).Value
在关闭表单时检查,是否已处理完所有内容?检查Inventory_Load,再次打开表单时是否有效?每次打开表单时,DataGridView都会显示数据库中的所有数据,但在第二次打开表单时,行的颜色不会改变。我不知道它是否处理了所有事情,因为我还没有用于FormClosing的事件处理程序。请尝试我。关闭时处理我想第二个和下一个form open
Options Strict On
;)没有运行Inventory_Load事件