Windows Forms DataGridView-添加太多行

时间:2019-04-25 20:28:38

标签: vb.net visual-studio winforms datagridview

对工作中的现有Windows Form应用程序进行故障排除。按下“添加分析物”按钮时,应该出现5行并且确实如此(有时,这是另一个错误)。当您选择其他分析物并再次单击“添加分析物”时,应该会出现另外5行。发生的情况是,将出现前一行分析物的另一行,第二行分析物的6行。

beforeAdd afterAdd

我已经尝试了很多事情-弄乱了添加行的For循环,并确保DataGridView.AllowUserToEdit为FALSE。我已经多次运行调试器,这是行数从5到12之后的代码。

 Private Sub FillerUpToolStripButton_Click(sender As Object, e As EventArgs) Handles FillerUpToolStripButton.Click

        Try
            Me.TblQCResultsTableAdapter.FillerUp(Me.DbCalcsDataSet.tblQCResults, New System.Nullable(Of Integer)(CType(QCIDToolStripTextBox.Text, Integer)))
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

    End Sub

预期结果是应该开始5行,然后再开始总共10行。这里还涉及其他功能,但这是调试器向我展示的是添加时rowCount从5跳到12。

更新

这里有更多代码可以帮助解释这个问题。 首先,这里是AddAnalyte按钮单击的代码:

    Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click

        If Me.cmbAnalytes.SelectedIndices.Count = 0 Then Exit Sub
        If Me.dgvPatientReview.RowCount > 0 Then

            Me.Validate()
            Me.TblQCResultsBindingSource.EndEdit()
            Me.TblQCResultsTableAdapter.Update(Me.DbCalcsDataSet.tblQCResults)

        End If

        For i = 0 To Me.cmbAnalytes.SelectedIndices.Count - 1
            AddFiveAnalytes(Me.cmbAnalytes.SelectedItems(i))
        Next

        Me.cmbAnalytes.ClearSelected()

        UpdateTable()

    End Sub

这可能是问题所在-因为这是第一次很好,并在添加更多行后中断。我不确定if语句“如果me.dgvPatientReview.RowCount> 0然后...”

AddFiveAnalytes子项也可能是问题所在

    Public Sub AddFiveAnalytes(ByVal test As String)

        Using cmd As New OleDb.OleDbCommand
            For i = 0 To 5
                cmd.Connection = con
                cmd.CommandText = "INSERT into tblQCResults (QCID, Analyte, [Within Tolerance], RevisedReport) VALUES (@QCID, @Analyte, 0, 0);"
                cmd.Parameters.AddWithValue("@QCID", intIncidence)
                cmd.Parameters.AddWithValue("@Analyte", test)

                cmd.ExecuteNonQuery()

            Next
        End Using

    End Sub

然后UpdateTable Sub也可能是问题:

   Public Sub UpdateTable()

        Dim Boo As Boolean = False

1:
        con.Close()
        con.Open()

        FillerUpToolStripButton.PerformClick()

        Dim intA As Integer = aRound(Me.dgvPatientReview.RowCount / 5, 0)

        If Not (Me.dgvPatientReview.RowCount / 5).ToString = intA.ToString Then
            If Boo = True Then
                MsgBox("There is an error in attempting to add 5 new lines. If you need more lines than are being shown, add 5 more. Any lines not used will be deleted when you save.")
                GoTo 2
            Else
                Boo = True
                GoTo 1
            End If
        End If
2:
        For i = 0 To Me.dgvPatientReview.RowCount - 1
            If Me.dgvPatientReview.Item(10, i).Value = True Then
                dgvPatientReview(11, i).Style.BackColor = Color.LightYellow
            Else
                dgvPatientReview(11, i).Style.BackColor = Color.Silver
            End If
        Next

    End Sub

我希望这些信息有助于解答此问题。 VBA绝对不是我的强项!

0 个答案:

没有答案