Моя страница выглядит корректно в Firefox и IE8. Но в IE7 вложенная сетка просматривается в соседней ячейке, очень похоже на проблему здесь .
Если посмотреть на это в инструментах разработчика, то с таблицей, сгенерированной ASP.NET, связан встроенный стиль, который имеет атрибут ширины 100%. Если я удаляю это, вложенная таблица возвращается туда, где она принадлежит.
Проблема в том, что нигде нет встроенного набора стилей. Фактически, если я пытаюсь установить width='250px'
, он переопределяется с width='100%'
. Если я попытаюсь удалить атрибут width в выделенном фрагменте кода, attrGridView.Attributes["Width"]
будет нулевым, а вызов .Remove()
ничего не сделает. Но у каждой таблицы gridview, созданной asp.net, есть встроенный стиль с установленным 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;
}