datagridview不会更新编辑更改

时间:2013-06-05 20:46:36

标签: datagridview contenteditable

我正在构建一个批量插入应用程序,以便在Windows窗体.net 3.5中将Excel之间的数据传输到Sql Server 问题是有时excel数据在转到Sql Server之前需要进行一些更改,这就是为什么我需要创建一个带有可编辑datagridview的应用程序,该应用程序就像过程中的中间层一样。

应用程序包括在一个datagridview中获取excel内容,然后我使用backcolor更改,工具提示等进行一些验证。因此,如果有一些单元格带有验证,则用户按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

1 个答案:

答案 0 :(得分:0)

你应该看看你的RowDataBound事件,并在那里应用你的颜色变化。

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

这样做会强制每次行反弹时都会发生颜色变化(这是在每次更改数据网格之后 - 不幸的是它们不是那里最有效的组件)