Urb*_*coz 7 vb.net asp.net rendering html-table internet-explorer-9
非常奇怪,这个.
我正在使用一个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>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这在Firefox和Chrome中显示良好,大部分时间在IE中显示.但是,有时对于较大的表(50多行),IE表现得很奇怪.它似乎添加了一个空白单元格......
...但HTML中没有任何内容 - 我使用开发人员工具进行了检查.不正确的行与正确的行具有相同的标记,但单元格文本除外.更重要的是,如果我删除了不正确的行,那么上面的那行开始显示错误.
请问有人可以建议为什么IE正在渲染它,以及我可以做些什么来阻止它.
Ric*_*ian 11
这似乎是IE9在渲染大型表时的一个已知错误.在删除表格def开始和结束标记之间的空白时,问题得到解决,例如.</td><td>