在您的示例中,我不明白为什么您需要跟踪单元格的数量,因为现在您只需添加一个带有交叉数据的单元格,并且该单元格是基于名称的女巫,这意味着您需要输入它们.
没有声明strTable,但表被多次添加,这是我要开始的:
' If dv.Table.Rows.Count > 0 Then - Not needed since we will get no data from For Each '
Dim sbTable as New System.Text.StringBuilder() ' Faster then concating many strings '
For Each dr As DataRowView In dv
Dim crossover As String = dr("CrossoverID").ToString()
Dim picid As String = dr("Description").ToString()
Dim picdescrip As String = dr("DesignColor").ToString()
sbTable.Append("<tr><td>" & crossover & "</td></tr>") ' Add one line, Separate <tr>, <td> & data & </td>, </tr> to separate lines to add multiple cells '
Next
If sbTable.Length > 0 Then divTable.InnerHtml = "<table style=""border:2;border-width: 1px;"">" & sbTable.ToString() & "</table>"
如果添加多次,StringBuilder 比 String 更快。
使用 & 在 VB.NET 中将字符串添加在一起,这确保它作为字符串而不是其他内容添加。
编辑:好的,所以您想要一个网格,由于您的示例中生成的 HTML 无效并且在多个地方被截断,因此尚不清楚您想要输出的方式。但无论如何我都会试一试。不幸的是,VB 注释的标记在 StackOverflow 上不能正常工作(注释末尾的 ' 是为了解决这个问题)。
Dim strTable as New StringBuilder()
Dim itmCounter As Integer = 0
Dim rowIsOpen As Boolean = False
For Each dr As DataRowView In dv
Dim crossover As String = dr("CrossoverID").ToString()
Dim picid As String = dr("Description").ToString()
Dim picdescrip As String = dr("DesignColor").ToString()
' For every 5 items create a new row. '
If itmCounter Mod 5 = 0 Then
' Since we want new row, first close any open row '
If rowIsOpen Then strTable.Append("</tr>")
' Start a new row and mark row as open so we can keep track '
strTable.Append("<tr>")
rowIsOpen = True
End If
strTable.Append("<td><a href=""Breakdown.aspx?p=" & crossover & """>")
strTable.Append("<img src=""Images/" + picid + ".png"" width=""100"" height=""100"" /><br />"))
strTable.Append(picdescrip & "</a></td>")
itmCounter += 1
Next
' Make sure we close any open rows '
If rowIsOpen Then strTable.Append("</tr>")
If sbTable.Length > 0 Then
divTable.InnerHtml = "<table style=""border:2;border-width: 1px;"">" & _
sbTable.ToString() & _
"</table>"
End If
该If itmCounter Mod 5 = 0 Then
零件用于tr
每 5 个项目关闭和打开一个新项目。这是需要的,因为这是For Each dr
更改项目的原因。(而不是在同一个项目上循环 5 次)
我还确保了 HTML 是有效的,但是您可能仍希望将某种 htmlEncode 添加到值中,以确保不会从不正确的值生成无效的 html。(双“”是在结果中只输出一个“)