我在使用一段代码时遇到了一些麻烦,我正在尝试将一个项目添加到我成功完成的dataTable中,但我注意到如果我尝试添加相同的元素,系统会让我,我自然而然地开始创建某种验证,以避免添加具有表格中已有ID的项目。
老实说,我没有看到我的代码存在问题,但我再次对此有点新意见。我试图做的是一个for循环,它使用当前项的ID填充arrayList,然后检查列表中是否已存在该ID(从组合框cmbRol中获取),以避免重复。
任何见解或提示都会非常有帮助。
这是我的代码。
Private Sub onAsignar(sender As Object, e As EventArgs) Handles btnAsignar.Click
Dim rol As Integer = cmbRol.SelectedValue
Dim lstActual As New ArrayList
Dim rw As Integer
For Each row As DataGridViewRow In gridListaDatos.Rows
lstActual.Add(gridListaDatos.Item(0, rw).Value)
Next
If (lstActual.Contains(rol)) Then
MessageBox.Show("This ID already exists in the table", "Asignar Rol", MessageBoxButtons.OK)
Else
gestorRol.asignarRolUsuario(rol, idUsuario)
ActualizarTabla()
End If
End Sub
End Class
答案 0 :(得分:0)
好的,我修复了这个......出于某种原因(可能是晚了)我假设rw变量会自动增加,当然不是这样。
正确的解决方案是:
Private Sub onAsignar(发件人作为对象,e作为EventArgs)处理btnAsignar.Click
Dim rol As Integer = cmbRol.SelectedValue
Dim lstActual As New ArrayList
Dim rw As Integer = 0
For Each index As DataGridViewRow In gridListaDatos.Rows
lstActual.Add(gridListaDatos.Item(0, rw).Value)
MessageBox.Show(gridListaDatos.Item(0, rw).Value, "ID", MessageBoxButtons.OK)
rw = rw + 1
Next
If (lstActual.Contains(rol)) Then
MessageBox.Show("Este rol ya pertenece a este usuario", "Asignar Rol", MessageBoxButtons.OK)
Else
gestorRol.asignarRolUsuario(rol, idUsuario)
ActualizarTabla()
End If
End Sub