2016-04-15 14 views
1

Можете ли вы, ребята, помочь мне, как это сделать? Я хочу иметь проверку строки для добавления элементов. У меня есть datagridview с именем datagridview1 с колонками dgvTxtItemCode, dgvTxtItemDesc и так далее. Я хочу добавить проверку, в которой всякий раз, когда вводится тот же код элемента или элемент, появляется окно с сообщением о том, что оно уже добавлено.Datagridview RowValidation in vb.net

Так вот мой код,

Function isAlreadyAdded(itemCode As String, itemName As String) As Boolean 
    Dim bFLAG As Boolean 
    For Each r As DataGridViewRow In DataGridView1.Rows 
     If r.Cells(0).Value = r.Index = itemCode AndAlso r.Index = itemName Then 
      bFLAG = True 
      Exit For 
     End If 
    Next 
    Return bFLAG 
End Function 



    Private Sub AddDelivery_RowValidating(sender As Object, e As DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating 
    With DataGridView1 
     If isAlreadyAdded(.Rows(e.RowIndex).Cells(dgvTxtItemDesc.Name).Value, e.RowIndex) Then 
      MessageBox.Show("Item was already added!", "Duplicate", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
      e.Cancel = True 
      Exit Sub 
     End If 
    End With 
End Sub 

Это для моего замковым так мне очень нужна ваша помощь. Спасибо вам, ребята.

+0

Он говорит что-то вроде «GNC-SAK-062», который является моим itemCode, не может быть преобразован в boolean – noob

+0

Почему бы вам не сделать это на 'CellValidating'? – jmcilhinney

+0

Вы имеете в виду вместо того, чтобы .rows это будут .cells? – noob

ответ

0

Постарайтесь обрабатывать события, связанные с ячейкой, вместо того, чтобы приводить к определенному значению. Как это:

Private Sub AddDelivery_RowValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DgOperacionsArticles.CellValidating 
    With DataGridView1 
     If isAlreadyAdded(.Rows(e.RowIndex).Cells(dgvTxtItemDesc.Name).Value, e.RowIndex)=True Then 
      MessageBox.Show("Item was already added!", "Duplicate", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
      e.Cancel = True 
      Exit Sub 
     End If 
    End With 
End Sub 

А также, чтобы убедиться, что это работает, défini булевой Лжи по умолчанию:

Dim bFLAG As Boolean = False 

Надеется, что это помогает!

+0

это не работает. Он говорит что-то вроде моего кода товара не может быть преобразован в double – noob

+0

Я думаю, что у вас есть проблема в этой строке: «Если r.Cells (0) .Value = r.Index = itemCode AndAlso r.Index = itemName Затем« Вы делаете сравнение одного объекта, одного целого и одной строки ... это должно завершиться неудачей. –