我想创建一个程序,列出带有附加到项目编号的相关超链接的项目。该列表来自另一个程序中创建的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)中的超链接。任何帮助或建议将不胜感激。谢谢!
答案 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
这应该有效。 希望这对你更好。 此致