2012-02-26 3 views
1

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

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

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 

EDIT: Добавление всего события кликов.

+0

Какой код вы использовали для добавления второй строки (Видя, что код может объяснить 'InvalidCastException')? –

+0

Отредактировано с помощью всего нажатия кнопки. –

ответ

1

Возможное объяснение состоит в том, что ваш 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) 

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

+0

Я не принимал во внимание, что String будет недостаточно. Спасибо за ответ. –

Смежные вопросы