如何增加 Datagridview.row 值?
How to increment Datagridview.row value?
我有代码可以将值插入到具有 2 列的 Datagridview 中。
但是对于 For Each
值,我只有第一个值而不是所有值。
我认为这是因为我可以添加另一个,因为代码只取第一个值而不在行中添加其他值。
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
Dim page = New HtmlDocument()
page.Load("C:\Users\test\Desktop\thanos.txt")
Dim lists = page.DocumentNode.SelectNodes("//div[@class='marketplace-collectible-list']")
For Each list In lists
Dim prod As String = list.SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim()
Dim link As String = list.SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
DataGridView1.Rows.Add(prod, link)
Next
如何增加其他值?
编辑 :
我尝试了以下但没有成功。
For Each list In lists
Dim f As Integer
f = DataGridView1.Rows.Count
Dim n As Integer = DataGridView1.Rows.Add()
DataGridView1.Rows.Item(n).Cells(0).Value = list.SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim() + 1
DataGridView1.Rows.Item(n).Cells(1).Value = list.SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value + 1
DataGridView1.Rows.Add(f)
Next
使用这段代码,我只在一列中得到了所有正确的数据:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim link As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim doc As HtmlDocument = New HtmlWeb().Load(link)
Dim div As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='marketplace-collectible-list']")
For Each node As HtmlNode In div.SelectNodes("//div[@class='marketplace-collectible-list']//a[@class = 'catalog-item-name']")
DataGridView1.Rows.Add(node.InnerText.Trim())
Next
For Each node2 As HtmlNode In div.SelectNodes("//div[@class='image-container']//img//@src")
DataGridView1.Rows.Add(node2.Attributes("src").Value)
Next
End Sub
End Class
但我想要不同列中的节点和节点2。
我也试过了,但我只有第一个值:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim link As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim page = New HtmlWeb().Load(link)
Dim lists = page.DocumentNode.SelectNodes("//div[@class='marketplace-collectible-list']")
For Each list In lists
For i As Integer = 0 To lists.Count - 1
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = lists(i).SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim()
DataGridView1.Rows(i).Cells(1).Value = lists(i).SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
Next
Next
End Sub
End Class
太糟糕了,我不能尝试你正在尝试的东西,但如果我看一下,你有一个列表作为一个集合和一个仍然是空的数据网格视图,你想在同时更改列表集合索引的同时填充它...
我认为这对你有用,如果你声明了列表类型你会帮助我更多地帮助你,你应该确保列表是(某物的列表)不只是 dim lists
那,请试试:
for i as integer = 0 to lists.count - 1
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = lists(i).SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim() + 1
DataGridView1.Rows(i).Cells(1).Value = lists(i).SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
next
'create the datatable as a data source for the datagridview
Dim dt As DataTable = New DataTable()
dt.Columns.Add(New DataColumn("Product"))
dt.Columns.Add(New DataColumn("Link"))
'connect to the site
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim siteaddress As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim doc As HtmlDocument = New HtmlWeb().Load(siteaddress)
Dim div As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='marketplace-collectible-list']")
'get data
For Each item As HtmlNode In div.SelectNodes("*//div[@class = 'row catalog-item-info']")
Dim product As HtmlNode = item.SelectSingleNode("*//a[@class = 'catalog-item-name']")
Dim link As HtmlNode = item.SelectSingleNode("*//div[@class = 'image-container']//img//@src")
dt.Rows.Add(New Object() {product.InnerText.Trim(), link.Attributes("src").Value})
Next
'bind data
DataGridView1.DataSource = dt
我有代码可以将值插入到具有 2 列的 Datagridview 中。
但是对于 For Each
值,我只有第一个值而不是所有值。
我认为这是因为我可以添加另一个,因为代码只取第一个值而不在行中添加其他值。
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
Dim page = New HtmlDocument()
page.Load("C:\Users\test\Desktop\thanos.txt")
Dim lists = page.DocumentNode.SelectNodes("//div[@class='marketplace-collectible-list']")
For Each list In lists
Dim prod As String = list.SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim()
Dim link As String = list.SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
DataGridView1.Rows.Add(prod, link)
Next
如何增加其他值? 编辑 : 我尝试了以下但没有成功。
For Each list In lists
Dim f As Integer
f = DataGridView1.Rows.Count
Dim n As Integer = DataGridView1.Rows.Add()
DataGridView1.Rows.Item(n).Cells(0).Value = list.SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim() + 1
DataGridView1.Rows.Item(n).Cells(1).Value = list.SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value + 1
DataGridView1.Rows.Add(f)
Next
使用这段代码,我只在一列中得到了所有正确的数据:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim link As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim doc As HtmlDocument = New HtmlWeb().Load(link)
Dim div As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='marketplace-collectible-list']")
For Each node As HtmlNode In div.SelectNodes("//div[@class='marketplace-collectible-list']//a[@class = 'catalog-item-name']")
DataGridView1.Rows.Add(node.InnerText.Trim())
Next
For Each node2 As HtmlNode In div.SelectNodes("//div[@class='image-container']//img//@src")
DataGridView1.Rows.Add(node2.Attributes("src").Value)
Next
End Sub
End Class
但我想要不同列中的节点和节点2。
我也试过了,但我只有第一个值:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.ColumnCount = 2
DataGridView1.Columns(0).Name = "Products"
DataGridView1.Columns(1).Name = "Links"
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim link As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim page = New HtmlWeb().Load(link)
Dim lists = page.DocumentNode.SelectNodes("//div[@class='marketplace-collectible-list']")
For Each list In lists
For i As Integer = 0 To lists.Count - 1
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = lists(i).SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim()
DataGridView1.Rows(i).Cells(1).Value = lists(i).SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
Next
Next
End Sub
End Class
太糟糕了,我不能尝试你正在尝试的东西,但如果我看一下,你有一个列表作为一个集合和一个仍然是空的数据网格视图,你想在同时更改列表集合索引的同时填充它...
我认为这对你有用,如果你声明了列表类型你会帮助我更多地帮助你,你应该确保列表是(某物的列表)不只是 dim lists
那,请试试:
for i as integer = 0 to lists.count - 1
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = lists(i).SelectSingleNode(".//*[@class = 'catalog-item-name']").InnerText.Trim() + 1
DataGridView1.Rows(i).Cells(1).Value = lists(i).SelectSingleNode(".//*[@class = 'image-container']//img//@src").Attributes("src").Value
next
'create the datatable as a data source for the datagridview
Dim dt As DataTable = New DataTable()
dt.Columns.Add(New DataColumn("Product"))
dt.Columns.Add(New DataColumn("Link"))
'connect to the site
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim siteaddress As String = "https://www.hobbydb.com/marketplaces/hobbydb/catalog_items?utf8=%E2%9C%93&q=thanos+sideshow&commit=Go"
Dim doc As HtmlDocument = New HtmlWeb().Load(siteaddress)
Dim div As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='marketplace-collectible-list']")
'get data
For Each item As HtmlNode In div.SelectNodes("*//div[@class = 'row catalog-item-info']")
Dim product As HtmlNode = item.SelectSingleNode("*//a[@class = 'catalog-item-name']")
Dim link As HtmlNode = item.SelectSingleNode("*//div[@class = 'image-container']//img//@src")
dt.Rows.Add(New Object() {product.InnerText.Trim(), link.Attributes("src").Value})
Next
'bind data
DataGridView1.DataSource = dt