2017-08-19 80 views
1

我有以下從JSON文件中的數據,我想作爲一個數據源的形式添加對組合框:讀取數據到數據源

"opr": [ 
    { 
     "name": "John", 
     "code": "JS" 
    }, 
    { 
     "name": "Diana", 
     "code": "DC" 
    }, 
    { 
     "name": "Cashier", 
     "code": "CS" 
    } 
    ], 

「名」是我的字符串d「要顯示在表單中,而」代碼「是每個名稱的包含值(例如,如果選擇約翰,那麼」JS「將顯示在另一個文本框中)

這裏是我要去的類用途:

Public Class Opr 
    Public Property name As String 
    Public Property code As String 
End Class 

Public Class cgOpr 
    Public Property opr As Opr() 
End Class 

以前我已經使用For Each遍歷所有的ID並添加它們與Items.Add,但我想知道我是否可以使用數據源。據我的理解,我需要將數組轉換爲列表,但我還沒有弄清楚如何。

我正在使用JSON.NET解析器。先謝謝你。

+0

那麼問題出在哪裏? – Fabio

+0

對不起,我忽略了我的問題...我正在尋找一種方法將這些JSON數據填充到DataSource的組合框(以前我用於For Each)。我以爲我需要將數組轉換爲可以放入DataSource的列表,但我已經找到了一個方法。 –

回答

1

您也可以使用數組作爲數據源。

Dim data As cgOpr = JsonConvert.DeserializeObject(Of cgOpr)(jsonString) 

combobox.ValueMember = "code" 
combobox.DisplayMember = "name" 
combobox.DataSource = data.opr 

然後你可以使用combobox.SelectedItemcombobox.SelectedValue訪問選擇的數據

Dim selected As Opr = DirectCast(combobox.SelectedItem, Opr) 
Dim selectedCode As String = selected.code 

' Or 
Dim selectedCode As String = combobox.SelectedValue.ToString() 
+0

謝謝!因此,如果有很多組合框,我是否需要設置這些值並顯示每個成員? –

+1

如果你想使用不同的值來顯示文本和價值本身,那麼是的。 – Fabio