真的很奇怪,这个。HTML表格在IE9中无法正确显示
我使用的是asp:Repeater
创建一个HTML表,就像这样:
标记:
<asp:Repeater ID="myRpt" runat="server">
<HeaderTemplate>
<table id="myGrd" border="0" style="cursor:pointer;width:100%; background-color:white;" cellpadding="2" cellspacing="0">
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr onclick="criteria.rowClicked(this);">
<td style="border:solid 1px black;">
<asp:Literal ID="lblName" runat="server"></asp:Literal>
</td>
<td style="border:solid 1px black;width:200px;">
<asp:Literal ID="lblRange" runat="server"></asp:Literal>
</td>
<td style="display:none;" >
<asp:Literal ID="lblMisc" runat="server"></asp:Literal>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody> </table>
</FooterTemplate>
</asp:Repeater>
VB:
Public Sub populateGrid(ByVal ds As DataSet)
'ds is just made from a simple select query
myRpt.DataSource = ds
myRpt.DataBind()
End Sub
Private Sub myRpt_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles myRpt.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim lblName As Literal = e.Item.FindControl("lblName")
Dim lblRange As Literal = e.Item.FindControl("lblRange")
Dim lblMisc As Literal = e.Item.FindControl("lblMisc")
lblName.Text = "<font style='font-size:10pt; font-family:arial;'>" & Trim(e.Item.DataItem("Name")) & "</font>"
lblRange.Text = "<font style='font-size:10pt; font-family:arial;'>" & Trim(e.Item.DataItem("Range")) & "</font>"
lblMisc.Text = "<font style='font-size:10pt; font-family:arial;'>" & Trim(e.Item.DataItem("Miscellaneous")) & "</font>"
End If
End Sub
这将显示在Firefox罚款和Chrome,并且大部分时间都在IE中。然而,有时对于更大的表(50+行),IE的行为很奇怪。这似乎添加一个空白单元格...
...但没有什么在我使用的开发工具检查HTML的。不正确的行具有与正确行相同的标记,单元格文本除外。还有,如果我删除不正确的行,它上面的那个开始显示错误。
请有人可以建议为什么地球上IE是这样渲染,以及我可以做些什么来阻止它。
看起来这是一个HTML/CSS/IE问题,与ASP无关。你有可能在JS小提琴中复制这个问题吗? (http://jsfiddle.net/) –
我已经将HTML复制到jsfiddle。奇怪的是,它似乎在那里呈现。 – Urbycoz
只是一个想法 - 是IE浏览器渲染页面在怪癖模式?如果您在页面上打开开发工具,菜单栏右侧报告的浏览器模式和文档模式是什么? –