Дублирующиеся значения в сетке данных - PullRequest
1 голос
/ 26 февраля 2012

Я использую несвязанную сетку данных в Visual Basic.Я сделал следующий цикл с целью поиска дубликатов в каждой ячейке и каждом столбце.Но по какой-то причине я получаю «InvalidCastException» при попытке добавить вторую строку.

Может кто-нибудь помочь?

Private Sub AddJudgeBtn_Click(sender As System.Object, e As System.EventArgs) Handles AddJudgeBtn.Click

    Dim exists As Boolean

    ' ToDo: If the value entered is already on the list, don't add again.

    If JudgeList.Rows.Count() > 0 Then
        For Each itm As DataGridViewRow In JudgeList.Rows
            If itm.Cells("JudgeIDNumber").Value = JudgeIDTxt.Text Then
                exists = True
            End If
        Next
    End If

    If exists = False Then
        Dim AddJudge As String()
        Try
            If JudgeList.Rows.Count = 0 Then
                ' There are no judges, by default. These person becomes the head judge.
                AddJudge = {"0", "HJ", JudgeIDTxt.Text, JudgeNameLbl.Text}
                JudgeList.Rows.Add(AddJudge)
            Else
                ' There is already a judge/head judge, this person becomes a regular judge.
                AddJudge = {"2", "J", JudgeIDTxt.Text, JudgeNameLbl.Text}
                JudgeList.Rows.Add(AddJudge)
            End If

        Catch ex As Exception
            ' Do Nothing
        End Try
    End If
    JudgeIDTxt.Clear()
End Sub

РЕДАКТИРОВАТЬ: Добавление всего события щелчка.

1 Ответ

1 голос
/ 26 февраля 2012

Возможное объяснение состоит в том, что ваша JudgeList DataTable не состоит только из строковых значений, как предлагается в этой строке:

Dim AddJudge As String()

Если это так, то это будет более точным:

Dim AddJudge As Object()

Адаптируйте также этот код для отображения правильных типов данных:

AddJudge = {"2", "J", JudgeIDTxt.Text, JudgeNameLbl.Text}

Я предполагаю, что первый параметр должен быть числовым, а не строкового типа, то есть:

AddJudge = {2, "J", JudgeIDTxt.Text, JudgeNameLbl.Text}

Вы также можете использовать:

Dim AddJudge As DataRow = JudgeList.NewRow()
JudgeList("JudgeIDNumber") = 2
' update remaining fields...
JudgeList.Rows.Add(AddJudge)

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

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