同样的问题,天哪,它太烦人了。将 div 与 gridview 的顶部对接时,在 IE6/7 中呈现故障 - 父 DIV 会导致两个元素之间存在空格。
我已经使用反射器挖掘了 GridView 代码并发现了问题:
Private Sub Render(ByVal writer As HtmlTextWriter, ByVal renderPanel As Boolean)
If (Not Me.Page Is Nothing) Then
Me.Page.VerifyRenderingInServerForm(Me)
End If
Me.PrepareControlHierarchy
If renderPanel Then
Dim clientID As String = Me.ClientID
If Me.DetermineRenderClientScript Then
If (clientID Is Nothing) Then
Throw New HttpException(SR.GetString("GridView_MustBeParented"))
End If
Dim builder As New StringBuilder("__gv", (clientID.Length + 9))
builder.Append(clientID)
builder.Append("__div")
writer.AddAttribute(HtmlTextWriterAttribute.Id, builder.ToString, True)
End If
writer.RenderBeginTag(HtmlTextWriterTag.Div)
End If
Me.RenderContents(writer)
If renderPanel Then
writer.RenderEndTag
End If
End Sub
这是从渲染中调用的:
Protected Friend Overrides Sub Render(ByVal writer As HtmlTextWriter)
Me.Render(writer, Not MyBase.DesignMode)
End Sub
所以,'renderPanel' == 不是设计模式。当gridview 不在 在UpdatePanel 中时,DIV 用于分页和排序。在我的网站上,所有 GridView 都在 UP 中,并且它们从自定义 gridview 类继承,所以我的解决方案是使用以下内容覆盖上述函数:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Me.PrepareControlHierarchy()
Me.RenderContents(writer)
End Sub
另一种解决方案是从上面复制渲染方法并根据需要进行更改。
这有点 HACK 的味道 - 您已被警告过,但可能对您有用,尤其是在您不使用分页/排序的情况下。