到目前为止,我一直在使用文本文件在我的应用程序中存储数据。它们有点逗号分隔。我使用了ListView和相当多的代码来呈现数据。
今天我发现了DataSet和DataGrid组件。我很乐意使用它们。然后我的数据可以存储在XML中,这很好,因为服务器也可以这样做。
不确定如何让它工作。我有一个简单的层次结构:
<myapp>
<user>
<firstname>John</firstname>
<lastname>Doe</lastname>
</user>
<collection>
<name>Beer cans</name>
<item>
<id>1</id>
<name>Heineken</name>
</item>
</collection>
<collection>
<name>Coffee mugs</name>
<item>
<id>18</id>
<name>Starbucks</name>
</item>
</collection>
</myapp>
通常我会将集合元素包装在父元素中,但这似乎使VB.NET中的内容复杂化。无论如何。我的问题是......
如果我的应用中有一个用户可以点击的集合列表,我很乐意在DataGrid中显示该集合中的所有项目。
到目前为止,我的代码在某种程度上选择了正确的集合,但我似乎无法亲自到达项目:
Dim DataSet As New DataSet
DataSet.ReadXml("c:\john.doe.xml")
MainGrid.DataSource = DataSet.Tables("collection").Select("name='" & selName & "'")
(编辑:错字)
答案 0 :(得分:1)
If NetworkInterface.GetIsNetworkAvailable Then
Dim cl As New WebClient
AddHandler cl.DownloadStringCompleted, AddressOf cl_DownloadStringCompleted
Dim url As String = "Your link in here"
cl.DownloadStringAsync(New Uri(url))
Else
MessageBox.Show("check your internet connection first")
End If
Private Sub cl_DownloadStringCompleted(sender As Object, e As System.Net.DownloadStringCompletedEventArgs)
Dim doc = XDocument.Parse(e.Result)
For Each result In doc.<myapp>.<user>
TextBlock1.Text = TextBlock1.Text & Environment.NewLine & result.<firstname>.Value
Next
End Sub
我希望它有效:)
答案 1 :(得分:0)
试试这个:
Dim CollectionTable As DataTable = DataSet.Tables("collection")
Dim CollectionSelection As DataRow() = CollectionTable.Select("name='" & selName & "'")
Dim CollectionID As Integer
If CollectionSelection.Count = 1 Then
CollectionID = CollectionSelection(0)("collection_id")
Else
Exit Sub
End If
MainGrid.DataSource = DataSet.Tables("item").Select("collection_id =" & CollectionID).CopyToDataTable()
您的DataSet正在读取您的xml并正在创建3个表user
,collection
和item
。 item
表格包含3列id
name
collection_id
。所以我做的是根据集合名称选择collection_id并根据该id选择项目。请注意,集合表包含name
和collection_id
列。