Как использовать функцию для предотвращения дублирования записи для datagridview - PullRequest
0 голосов
/ 25 октября 2019

Я использую функцию, чтобы предотвратить попадание той же записи в мое представление данных, но оно не работает, когда я отделяю код, тогда он работает

Я пытался отделить часть цикла for, затем код работает, ноя хочу использовать функцию, чтобы сделать это так, чтобы код выглядел более аккуратно

Private Sub PicFavNote10_Click(sender As Object, e As EventArgs) Handles picFavNote10.Click
       If validationDataGrid(lblNameNote10.Text) <> True Then
           'if item didn added to the favorite data table yet
           'add to favorite table
           addTofavorite(lblUserLogin.Text, lblNameNote10.Text, lblDecpNote10.Text, txtPicNote10.Text, "SmartPhone", lblPriceNote10.Text)
       End If
       lblPriceNote10.Text = FormatCurrency(lblPriceNote10.Text)
   End Sub
   Private Function validationDataGrid(ByRef data As String) As Boolean
       'validation on data grid view
       For Each itm As DataGridViewRow In DGTFavTable.Rows 'loop though every item in datagrid
           If itm.Cells(0).Value = data Then 'check wherter the text already exist
               MsgBox(data & " Already added to your favorite cart")
               Return True
           Else
               Return False
           End If
       Next
   End Function

Я ожидал, что MsgBox (данные и «уже добавлены в вашу любимую корзину») будет исключительным, но вместо этого функция validationDataGrid возвращает ложное значение дажеэлемент уже добавлен в любимый обзор данных

1 Ответ

0 голосов
/ 25 октября 2019

Прежде чем вы зациклите все строки, вам нужно вызвать эту подпрограмму, поскольку это эффективный обходной путь для проверки новых данных в DataGridView:

Private Sub ForceGridValidation()

    'Get the current cell
    Dim currentCell As DataGridViewCell = DGTFavTable.CurrentCell

    If currentCell IsNot Nothing Then
        Dim colIndex As Integer = currentCell.ColumnIndex
        If colIndex < DGTFavTable.Columns.Count - 1 Then
            DGTFavTable.CurrentCell = DGTFavTable.Item(colIndex + 1, currentCell.RowIndex)

        ElseIf colIndex > 1 Then
            DGTFavTable.CurrentCell = DGTFavTable.Item(colIndex - 1, currentCell.RowIndex)
        End If

        'Set the original cell 
        DGTFavTable.CurrentCell = currentCell
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...