我从数据库中提取了供应商名单,并将其保存在一个数组中。TOTAL_SUPPLIERS_ARRAY
现在我尝试在listbox或combobox中添加,但它在运行时显示一个错误,说 "VALUE CAN NOT BE NULL",但如果我尝试用循环添加它,它可以正常工作,为什么它不工作与 .addrange
?
Sub GET_SUPPLIERS_DETAILS()
Dim CON As New MySqlConnection("server=localhost; username=root; password=Masoom1; database=airtech_db;")
Dim cmd As New MySqlCommand("Select * from `Suppliers`;", CON)
Dim da As New MySqlDataAdapter("Select * from `Suppliers`;", CON)
Dim ds As New DataSet
Dim dr As MySqlDataReader
Dim TOTAL_SUPPLIERS As Integer
CON.Open()
da.Fill(ds)
dr = cmd.ExecuteReader
TOTAL_SUPPLIERS = ds.Tables(0).Rows.Count
Dim TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS) As String, ARRAYINDEX As Integer
Do While dr.Read() = True
TOTAL_SUPPLIERS_ARRAY(ARRAYINDEX) = dr("Supplier_Name").ToString()
ARRAYINDEX += 1
Loop
CON.Close()
Dim cbCell As New DataGridViewComboBoxCell
For k = 0 To DataGridView1.Rows.Count - 1
cbCell = DataGridView1.Rows(k).Cells("Supplier_Name")
For iIndex = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
cbCell.Items.Add(TOTAL_SUPPLIERS_ARRAY(iIndex))
Next
Next
ListBox1.Items.AddRange(TOTAL_SUPPLIERS_ARRAY)
ComboBox1.Items.AddRange(TOTAL_SUPPLIERS_ARRAY)
For I As Integer = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
TextBox1.Text += TOTAL_SUPPLIERS_ARRAY(I) & " - "
Next I
End Sub
这个部分只有在我通过循环添加的时候才会工作。
For I As Integer = 0 To UBound(TOTAL_SUPPLIERS_ARRAY) - 1
TextBox1.Text += TOTAL_SUPPLIERS_ARRAY(I) & " - "
Next I
listbox.addrange
指挥和 combobox.addrange
命令失效
这里你有一个问题 TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS)
. 在VB中声明的数组 - array(upper-bound)
. 上限是比计数少1。所以,你应该做 TOTAL_SUPPLIERS_ARRAY(TOTAL_SUPPLIERS - 1)
.
但为什么要挣扎呢?只要使用列表
Dim myList as New List(of String)
While dr.Read()
myList.Add(dr("Supplier_Name").ToString())
Loop
然后,如果你还需要数组,你可以使用LINQ--。myList.ToArray
ListBox1.DataSource = myList.ToArray()