我的页面在Firefox和IE8中看起来正确。但是在IE7中,嵌套的gridview溢出到相邻的单元格中,就像问题here一样。
在开发人员工具中查看它,有一个与ASP.NET生成的表关联的内联样式,并且它的width属性为100%。如果我删除它,嵌套表会弹回它所属的位置。
问题是,没有一个内联式的设置。实际上,如果我尝试设置width='250px'
,它会被width='100%'
覆盖。如果我尝试删除代码隐藏中的width属性,attrGridView.Attributes["Width"]
为null,并且调用.Remove()
不执行任何操作。但是每个asp.net生成的gridview-table都有一个内嵌样式,其上设置了width='100%'
(它只会在一个地方引起我的问题)。
根据我链接的文章中的建议设置table-layout='fixed'
没有帮助。
如何让ASP.NET停止设置此属性?
一些代码:
<asp:TemplateField HeaderText="Attributes" SortExpression="Attributes">
<HeaderStyle CssClass="GridHeaderCell" />
<ItemStyle CssClass="GridTableCell AttrGridCellPadding" />
<ItemTemplate>
<asp:GridView id="attributesGridView" runat="server"
AutoGenerateColumns="false" ShowHeader="false" GridLines="None"
AlternatingRowStyle-BackColor="White" CssClass="StupidGridView" >
<EmptyDataTemplate>
<p class="italic">There are no attributes for this request.</p>
</EmptyDataTemplate>
<Columns>
<asp:TemplateField>
<ItemStyle CssClass="AttrTableCell" />
<ItemTemplate>
<asp:Label id="attributeName" runat="server"
Text='<%# Eval("Name") + ": "+ Eval("Value") %>'
CssClass="AttrGridCell"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
.StupidGridView {
width: 250px;
}
答案 0 :(得分:2)
正在应用主题并覆盖控制级别设置。检查页面,web.config或其他任何可以设置主题的主题设置。
答案 1 :(得分:1)
不幸的是,ASP.NET html渲染非常糟糕。 Microsoft知道并在2006年提供了Control adapters,允许您修改控件呈现。
我建议不要搜索如何覆盖ASP.NET呈现的内容,而是建议使用CSSFriendly为大多数ASP.NET呈现错误的控件提供控件适配器。
如果你不需要“纯css渲染”而CSS害怕你,你可以检查他们如何创建你自己的适配器。
来自Google的