将2D数组绑定到Datagrid

时间:2013-12-16 21:02:57

标签: arrays vb.net

所以我的情况是我想从我的数据库中的两个字段填充二维数组。 我在分配一个数值为数据库字段的数组时遇到了问题 第二个是在datagrid中显示数组,我编码了dgv2.Datasource = myArray但它仍然返回一条错误信息。

这是我的代码:

Dim msql As String = "select item_id from detail"
    Dim arayT(,) As String

    CMD = New MySqlCommand(msql, conn.konek)

    Try
        Dim res= CMD.ExecuteReader()


        While res.Read()
            For i As Integer = 0 To x - 1
                For j = 0 To y - 1

                    arayT(i, j) = res.GetString("item_id")


                Next j
            Next i
        End While

    Catch ex As Exception
        MessageBox.Show("ERROR")

    End Try
    dgv2.DataSource = arayT

所以我的问题是 首先,如何将数据库中的记录列作为值分配到我的2d数组中? (我仍然不确定我的编码是否正确) 第二,如何将2d数组查看到datagrid,我的意思是将2d数组绑定到datagrid

我的一些要求......请不要让我使用(t)列表或使用LINQ因为我仍然不太熟悉它们。

我在我的代码中做了一些修复,但它没有很好地工作..我的最新截图 enter image description here

2 个答案:

答案 0 :(得分:0)

将二维数组设置为datagridview的数据源时会出现什么错误消息?好吧,如果数据源命令给你一个错误,你可以循环并将值分配给datagridview。

'Ensure that the required number of rows are available
If DataGridView.Rows.Count < some2darray.GetUpperBound(0) Then
 DataGridView.Rows.Add((some2darray.GetUpperBound(0) + 1) - DataGridView.Rows.Count)    
End If

'Also ensure that the required number of columns are available

'Fill up the datagridview with the data from the 2D array
For x = 0 to some2darray.GetUpperBound(0)
 For y = 0 to some2darray.GetUpperBound(1)
   DataGridView.Item(y, x).Value = some2darray(x, y)
 Next
Next

如果您的2Darray没有引用点,并且必须从其他来源获取其值,那么请使用此代码ReDim Preserve some2darray(x, y),例如

For x = 0 to rowcountofthesource
 For y = 0 to columncountofthesource
  ReDim Preserve some2darray(x, y)
  'Code here
  DataGridView.Item(y, x).Value = some2darray(x, y)
 Next
Next

如果您的2Darray一次性从其他来源获取所有数据。然后ReDim将您的2D阵列保留到该源的总行数和列数,例如ReDim Preserve some2darray(totalrowsofthesourcehere, totalcolumnsofthesourcehere)并在循环外键入它,因为您不需要一次又一次地执行此操作。如果您的数组在使用前为空并且不包含数据,那么您不需要使用ReDim Preserve,只需使用ReDim some2darray(int, int)

答案 1 :(得分:0)

大家好,我的问题终于明白了,这是我的问题的答案

ReDim Preserve arayT(x, y)
For i = 0 To (x-1)
    For j = 0 To (y-1)
        hasil.Read()
        arayT(i, j) = hasil("kode_brg")
    Next j
 Next i

原来我不需要使用..

非常感谢Afnan,Neolisk和Emmad已经帮助我回答了我的问题。 :)