Я настроил таблицу, которая заполняется на основе хранимой процедуры, которая выполняется. Ширина div, содержащая таблицу, составляет 96% страницы. Ширина таблицы составляет 100%. Проблема, с которой я столкнулась, состоит в том, когда у меня есть два-три элемента, заполняющих таблицу, между массивами находится массивное пространство. Я указываю пробел в таблице, но это не работает. У меня также проблемы с черным шрифтом. Я взял весь CSS, относящийся к гиперссылкам <a></a>
, но он все еще не отображает правильный цвет шрифта. Какие-либо предложения?
Dim con5 As New SqlConnection
Dim cmd5 As New SqlCommand
Dim index As Integer = 0
Dim dt1 As New DataSet
con5.ConnectionString = ConfigurationSettings.AppSettings("ConnectionString")
con5.Open()
cmd5.Connection = con5
cmd5.CommandType = CommandType.StoredProcedure
cmd5.CommandText = "ProductBreakdown"
cmd5.Parameters.Add(New SqlParameter("ProductID", SqlDbType.Int)).Value = Session("Product")
cmd5.Parameters.Add(New SqlParameter("DesignName", SqlDbType.VarChar, 50)).Value = Request.QueryString("o")
Dim da1 As SqlDataAdapter = New SqlDataAdapter(cmd5)
da1.Fill(dt1)
Dim table1 As New HtmlTable
Dim numells As Integer = 6
dv = New DataView(dt1.Tables(0))
Dim tablestring = ""
Dim strTable As New StringBuilder()
Dim rowIsOpen As Boolean = False
Dim itmCounter As Integer = 0
strTable.Append("<table width=""100%"" ""cellspacing=10px"" ""cellpadding=10px""> ")
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().ToUpper()
Dim collectionname As String = dr("CollectionDescription").ToString().ToUpper()
Dim designinfo As String = dr("DesignName").ToString()
Session("Collection") = dr("CollectionDescription").ToString()
'collectionname.ToUpper()
' For every 5 items create a new row.
If itmCounter Mod 4 = 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=""Sheet Vinyl Tile Product Page.aspx?p=" & crossover & "&o=" & designinfo & """>")
strTable.Append("<img src=""Images/Products/" + picid + ".jpg""width=""188"" height=""188"" border=""0"""" /><br/><br/>")
strTable.Append("<b><color=Black>" & collectionname & "</b><br />")
strTable.Append(picdescrip & "</a></td>")
itmCounter += 1
Next
' Next
' Make sure we close any open rows
If rowIsOpen Then strTable.Append("</tr>")
If strTable.Length > 0 Then
product.InnerHtml = "<table>" & _
strTable.ToString() & _
"</table>"
End If
Таблицы имеют определенную роль в HTML, но вы можете использовать DIV в этом случае. DIVs автоматически будут плавать и перемещаться по ширине браузера.
Вот пример в jsFiddle
HTML
<div class="table">
<div class="banner">The preferred developer response</div>
<div class="cell">
<img src="happy-icon.png">
</div>
...
<div class="banner">Other emotions</div>
<div class="cell">
<img src="sad-icon.png">
</div>
...
</div>
CSS
.table {
margin-left: 50px;
margin-right: 50px;
}
.banner {
padding: 10px;
margin-top: 20px;
clear: both;
background-color: #336699;
color: white;
font-weight: bold;
}
.cell {
width: 150px;
float: left;
}
Ваш код может выглядеть так:
Dim con5 As New SqlConnection
Dim cmd5 As New SqlCommand
Dim index As Integer = 0
Dim dt1 As New DataSet
con5.ConnectionString = ConfigurationSettings.AppSettings("ConnectionString")
con5.Open()
cmd5.Connection = con5
cmd5.CommandType = CommandType.StoredProcedure
cmd5.CommandText = "ProductBreakdown"
cmd5.Parameters.Add(New SqlParameter("ProductID", SqlDbType.Int)).Value = Session("Product")
cmd5.Parameters.Add(New SqlParameter("DesignName", SqlDbType.VarChar, 50)).Value = Request.QueryString("o")
Dim da1 As SqlDataAdapter = New SqlDataAdapter(cmd5)
da1.Fill(dt1)
dv = New DataView(dt1.Tables(0))
Dim strTable As New StringBuilder()
Dim itmCounter As Integer = 0
strTable.Append("<div class=""table""> ")
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().ToUpper()
Dim collectionname As String = dr("CollectionDescription").ToString().ToUpper()
Dim designinfo As String = dr("DesignName").ToString()
Session("Collection") = dr("CollectionDescription").ToString()
strTable.Append("<div class=""cell""><a href=""Sheet Vinyl Tile Product Page.aspx?p=" & crossover & "&o=" & designinfo & """>")
strTable.Append("<img src=""Images/Products/" + picid + ".jpg""width=""188"" height=""188"" border=""0"""" /><br/><br/>")
strTable.Append("<b><color=Black>" & collectionname & "</b><br />")
strTable.Append(picdescrip & "</a></div>")
itmCounter += 1
Next
strTable.Append("</div>")
product.InnerHtml = strTable.ToString()
Такой же вкус, но меньше калорий