VB.NET - DataSet,DataGrid和XML - 选择表和行

时间:2013-02-02 12:54:48

标签: xml vb.net datagrid dataset

到目前为止,我一直在使用文本文件在我的应用程序中存储数据。它们有点逗号分隔。我使用了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 & "'")

(编辑:错字)

2 个答案:

答案 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个表usercollectionitemitem表格包含3列id name collection_id。所以我做的是根据集合名称选择collection_id并根据该id选择项目。请注意,集合表包含namecollection_id列。