Datagridview 是空白的 - 试图从 API 服务引用填充

Datagridview is blank - trying to populate from API service reference

我今天一直在网上尝试不同的事情,但我只是不知何故错过了船。我正在尝试使用提供的 api 中的数据填充数据网格视图。但是,当代码执行时,不会抛出任何错误,但 datagridview 中不会显示任何信息。您还会注意到引用了一个列表框。我能够按预期在列表框中显示来自 API 的值,所以我知道我只是在 datagridview 设置中做错了什么,但我似乎无法查明它。感谢您的帮助!

  Dim frmTestCase As New Form1

    Dim dgv As New DataGridView

    dgv = frmTestCase.DataGridView1

    dgv.Columns.Add("ID", "ID")
    dgv.Columns.Add("Name", "Name")

    Dim i As Integer

    'Loop through test cases and get their data for datagrid
    For i = 0 To UBound(remoteTestCases) - 1
        Dim matchingTestCase = remoteTestCases(i)
        Dim testCaseID As String = CStr(matchingTestCase.TestCaseId.Value)
        Dim testCaseName As String = matchingTestCase.Name

        Dim row As DataGridViewRow = New DataGridViewRow

        row.CreateCells(dgv)

        row.Cells(0).Value = testCaseID
        row.Cells(1).Value = testCaseName

        dgv.Rows.Add(row)


        Me.ListBox1.Items.Add(testCaseID)

    Next

此代码:

Dim frmTestCase As New Form1
Dim dgv As New DataGridView
dgv = frmTestCase.DataGridView1

似乎 试图缩短对 dgv 的引用。但在这样做时,它会创建一个新的 Form1 实例,并通过扩展创建一个新的 DataGridView1。您很可能会在从未显示的表单上填充 DGV。

一种补救措施是使用 IDE 属性 编辑器将此表单 (Me) 上的 DataGridView1 重命名为更有意义或更短的名称。

如果 dgv 是当前表格,创建较短参考的方法是:

Dim dgv As DataGridView = Me.DataGridView1

如果控件在不同的现有窗体上1:

Dim dgv As DataGridView = theOtherFrmRef.DataGridView1

最后,如果您正在尝试在新表单实例上填充 DGV,请务必Show()它最后。

New 创建一个新的实例,你根本不需要新的 Form ref 或新的 DGV。假设已经有列添加到DGV中,添加行也可以简化为:

dgv.Rows.Add(testCaseID, testCaseName)

1 也假定显式实例。否则你可能不会发布到你认为的实例。