我有一些数据显示在DataGridView
和我的btnSave_Click
事件中,我调用一个子例程来验证网格中的数据,然后将其保存到我的数据库中。获取DataGridView嵌套单元格的值For循环
我这样做的方式是对每一行使用一个循环,并在该循环内部使用另一个for循环,对于每一列。
我需要然后比较它正在验证的单元格值(行dr,单元格dc)中的每个字符。但是,我无法找到使用行/列坐标来获取单元格中的值的方法。
这有点难以解释我的意思,但在此代码中,我在前两行设置了For Loops
,然后在第三行,请注意If IsDBNull(dc.TextInCell)
- TextInCell是我需要替换的。
In Row;博士和列; DC,我需要再验证存储单元格中的数值...
For Each dr As DataGridViewRow In dgvImport.Rows
For Each dc As DataGridViewColumn In dgvImport.Columns
If dc.HeaderText = "Product Code" Then
If IsDBNull(dc.TextInCell) = True Or dc.TextInCell = Nothing Or dc.TextInCell = "" Then
Me.Cursor = Cursors.Default
MsgBox("Import failed. One or more required fields were not entered", MsgBoxStyle.OkOnly, "Error")
Exit Sub
End If
For Each c As Char In dc.TextInCell
If Not Char.IsLetterOrDigit(c) Then
If Not Char.IsWhiteSpace(c) Then
If c <> "&" AndAlso c <> "-" AndAlso c <> "(" AndAlso c <> ")" Then
Me.Cursor = Cursors.Default
MsgBox("Import failed. One or more cells contains an invalid character", MsgBoxStyle.OkOnly, "Error")
Exit Sub
End If
End If
End If
Next
如何获取单元格的值到一个变量从这里通过审定发送?
有些事件可以让你在你去的时候进行验证,这样你就可以告诉用户他们有错误*,而不是“在这个页面上有错误”。 CellValidating是其中之一,CellLeave也是一种可能性 – Plutonix
@Plutonix不确定这是可能的。这是从Excel电子表格中选择的数据,并且'DataSource'是我在选择它后填充的'DataTable' – David
在这种情况下,我肯定不会循环通过DGV,而是通过DataTable行。您可以添加一个列,指出哪些列通过,哪些列出错,并提供一些视觉提示 – Plutonix