我在驗證在 datagridview 中輸入的資料時遇到問題,即使我輸入了不同的代碼,這也會為我驗證它。
使用此代碼,我搜索資料網格視圖中顯示的產品或資料
Private Sub dgvdetalle_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvdetalle.KeyUp
dt = negLog.buscar_pro_parametro(VGlobales.Base, Me.dgvdetalle.CurrentRow.Cells(0).Value)
For Each data As DataRow In dt.Rows
'Dim aa As Integer = Me.dgvdetalle.Rows.Add()
' Me.dgvproductoscanjes.Rows(aa).Cells(0).Value = data("seleccionar").ToString().Trim
Me.dgvdetalle.CurrentRow.Cells(0).Value = data("IDPRODUCTO").ToString()
Me.dgvdetalle.CurrentRow.Cells(1).Value = data("DESCRIPCION").ToString()
Next
End Sub
并使用 CellEndEdit datagridview 事件中的此代碼進行驗證。
Private Sub dgvdetalle_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvdetalle.CellEndEdit
Dim clave As String
Dim nlinea As Integer
Select e.ColumnIndex
Case 0
clave = dgvdetalle.Rows(dgvdetalle.CurrentRow.Index).Cells(0).Value
nlinea = dgvdetalle.CurrentRow.Index
For i As Integer = 0 To dgvdetalle.Rows.Count - 1
If clave = dgvdetalle.Rows(dgvdetalle.CurrentRow.Index).Cells(0).Value And i <> nlinea Then
dgvdetalle.Rows(nlinea).Cells(0).Value = ""
MsgBox("esta repetido el codigo")
SendKeys.Send("{UP}")
Exit Sub
End If
Next
End Select
End Sub

uj5u.com熱心網友回復:
你的問題是這條線 If clave = dgvdetalle.Rows(dgvdetalle.CurrentRow.Index).Cells(0).Value And i <> nlinea Then
clave將永遠等于, dgvdetalle.Rows(dgvdetalle.CurrentRow.Index).Cells(0).Value因為那是您分配給它的。回圈不會改變當前行,它只是改變 的值i。您想clave與dgvdetalle.Rows(i).Cells(0).Value.ToString.
該ToString是必要的選項嚴格上這是應該的。在編譯選項卡上的專案屬性和工具選單 -> 選項 -> 專案和解決方案 -> VB 默認值中打開它。
我將 Select Case 更改為 If,因為只有一個 case。
Private Sub dgvdetalle_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgvdetalle.CellEndEdit
Dim clave As String
Dim nlinea As Integer
If e.ColumnIndex = 0 Then
clave = dgvdetalle.Rows(dgvdetalle.CurrentRow.Index).Cells(0).Value.ToString
nlinea = dgvdetalle.CurrentRow.Index
For i As Integer = 0 To dgvdetalle.Rows.Count - 1
If clave = dgvdetalle.Rows(i).Cells(0).Value.ToString And i <> nlinea Then
dgvdetalle.Rows(nlinea).Cells(0).Value = ""
MsgBox("esta repetido el codigo")
SendKeys.Send("{UP}")
Exit Sub
End If
Next
End If
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/314922.html
