0

我正在构建一个批量插入应用程序以在 Windows 表单 .net 3.5 中将数据在 Excel 之间传输到 Sql Server 问题是有时 excel 数据需要在转到 Sql Server 之前进行一些更改,这就是为什么我需要创建一个具有可编辑 datagridview 的应用程序,它的工作原理类似于中间过程中的层。

该应用程序包括在一个 datagridview 中获取一个 excel 内容,然后我使用背景颜色更改、工具提示等进行一些验证。因此,如果有一些带有验证的单元格,用户按 F2 并更改相应的内容。

问题是,当用户结束更改单元格时,我想再次应用验证过程(更改背景颜色行、添加工具提示等),这不再起作用,只起作用一次。换句话说,在 datagridview 单元格发生一些变化后,任何改变单元格背景颜色的方法都不起作用。

一些想法?感谢大家。

笔记:

这是我的 4 种验证方法之一:

**enter code here**

Public Sub Validate()
    For Each x As DataGridViewRow In DataGridView1.Rows
        If IsDBNull(x.Cells(0).Value) Then
            DataGridView1.Rows(x.Index).Cells(0).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(1).Value) Then
            DataGridView1.Rows(x.Index).Cells(1).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(2).Value) Then
            DataGridView1.Rows(x.Index).Cells(2).Style.BackColor = Color.Red
        End If

        If IsDBNull(x.Cells(3).Value) Then
            DataGridView1.Rows(x.Index).Cells(3).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(4).Value) Then
            DataGridView1.Rows(x.Index).Cells(4).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(5).Value) Then
            DataGridView1.Rows(x.Index).Cells(5).Style.BackColor = Color.Yellow
        End If


        If IsDBNull(x.Cells(6).Value) Then
            DataGridView1.Rows(x.Index).Cells(6).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(7).Value) Then
            DataGridView1.Rows(x.Index).Cells(7).Style.BackColor = Color.Red
        End If


        If IsDBNull(x.Cells(8).Value) Then
            DataGridView1.Rows(x.Index).Cells(8).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(9).Value) Then
            DataGridView1.Rows(x.Index).Cells(9).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(10).Value) Then
            DataGridView1.Rows(x.Index).Cells(10).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(11).Value) Then
            DataGridView1.Rows(x.Index).Cells(11).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(12).Value) Then
            DataGridView1.Rows(x.Index).Cells(12).Style.BackColor = Color.Yellow
        End If


        If IsDBNull(x.Cells(13).Value) Then
            DataGridView1.Rows(x.Index).Cells(13).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(14).Value) Then
            DataGridView1.Rows(x.Index).Cells(14).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(15).Value) Then
            DataGridView1.Rows(x.Index).Cells(15).Style.BackColor = Color.Red
        End If

        If IsDBNull(x.Cells(16).Value) Then
            DataGridView1.Rows(x.Index).Cells(16).Style.BackColor = Color.Yellow
        End If
        If IsDBNull(x.Cells(17).Value) Then
            DataGridView1.Rows(x.Index).Cells(17).Style.BackColor = Color.Yellow
        End If



        If IsDBNull(x.Cells(18).Value) Then
            DataGridView1.Rows(x.Index).Cells(18).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(19).Value) Then
            DataGridView1.Rows(x.Index).Cells(19).Style.BackColor = Color.Red
        End If
        If IsDBNull(x.Cells(20).Value) Then
            DataGridView1.Rows(x.Index).Cells(20).Style.BackColor = Color.Red
        End If

    Next
End Sub
4

1 回答 1

0

您应该查看您的 RowDataBound 事件,并在那里应用您的颜色更改。

    protected void DataGridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   Validate() 'add any other coloring changes here as well
}

这将做的是每次行反弹时强制进行颜色更改(这是在每次更改数据网格之后 - 不幸的是它们不是最有效的组件)

于 2013-06-05T21:00:39.330 回答