使用Visual Basic中的超链接从DataSet创建DataGridView

时间:2014-07-17 16:14:41

标签: xml vb.net datagridview hyperlink vb.net-2010

我想创建一个程序,列出带有附加到项目编号的相关超链接的项目。该列表来自另一个程序中创建的XML,如下所示:

<root>
  <item>
    <iNum>12</inum>
    <iTitle>Title 12</iTitle>
    <iURL>http://link.to/title12</iURL>
  </item>

  <item>
    <iNum>15</inum>
    <iTitle>Title 15</iTitle>
    <iURL>http://link.to/title15</iURL>
  </item>
</root>

使用此列表,我编写了可视化基本代码以将XML文件导入DataSet,然后将DataSet放入我的程序中的DataGridView中。这就是Visual Basic代码的样子。

''' <summary>
''' Puts XML results into DataGrid.
''' </summary>
''' <remarks></remarks>
Private Sub XML_to_DataGrid()
    Try
        ds.ReadXml(xFileLoc)

        ds.Tables(0).Columns(0).ColumnName = "Item Number"
        ds.Tables(0).Columns(1).ColumnName = "Item Title"
        ds.Tables(0).Columns(2).ColumnName = "Item URL"

        DataGridView.DataSource = ds.Tables(0).DefaultView

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

我不确定如何将DataSet的第1列中的项目(项目编号)链接到第3列(项目URL)中的超链接。任何帮助或建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我的道歉,我不明白它是针对Window形式的......很长一段时间我只做Web Apps。我在一个较旧的程序中找到了这个,并将其改编为VB.NET:

所以不要将DataSet绑定到DataGridView,而是通过这样的循环填充它:

        Dim MyDS As New DataSet
        MyDS.ReadXml("MyXMLfile.xml")

        ' Define the column
        DataGridView1.Columns.Add("Col1", "N°")
        DataGridView1.Columns.Add("Col2", "Title")
        DataGridView1.Columns.Add("Col3", "HL")
        DataGridView1.Columns(2).Visible = False

        Dim row As DataGridViewRow
        Dim cell1 As DataGridViewLinkCell
        Dim cell2 As DataGridViewTextBoxCell
        Dim cell3 As DataGridViewTextBoxCell

        ' Loop arround the DataSel rows
        For i = 0 To MyDS.Tables(0).Rows.Count - 1

            row = New DataGridViewRow

            cell1 = New DataGridViewLinkCell
            cell1.Value = MyDS.Tables(0).Rows(i).Item(0)
            row.Cells.Add(cell1)

            cell2 = New DataGridViewTextBoxCell
            cell2.Value = MyDS.Tables(0).Rows(i).Item(1)
            row.Cells.Add(cell2)

            cell3 = New DataGridViewTextBoxCell
            cell3.Value = MyDS.Tables(0).Rows(i).Item(2)
            row.Cells.Add(cell3)

            DataGridView1.Rows.Add(row)
        Next

为click事件添加一个函数:

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    Process.Start(DataGridView1.Item(2, e.RowIndex).Value.ToString)
End Sub

这应该有效。 希望这对你更好。 此致