Я создал GridView в приложении ASP.NET и использовал инструмент «Автоформат», чтобы применить привлекательный стиль. Теперь я перемещаю разметку стиля на лист CSS, и у меня возникает странная проблема, когда текст в строке заголовка имеет неправильный цвет (он должен быть белым, но отображается ярко-синим). Эта проблема появляется только тогда, когда я включаю сортировку.
Все остальное работает нормально. Например, я могу изменить фон заголовка на красный, и он станет красным, а остальные стили сетки будут применены соответствующим образом.
Кто-нибудь знает, в чем заключается сделка? Я включил фрагменты кода ниже. Я также новичок в CSS. Дайте мне знать, если у кого-нибудь есть советы по улучшению моей разметки CSS.
Спасибо!
Вот код ASP.NET. Я могу добавить ForeColor = "White" в HeaderStyle, и все работает нормально.
<asp:GridView ID = "GridView1" runat = "server" CssClass = "grid"
AutoGenerateColumns = "False" DataKeyNames = "ID" DataSourceID = "SqlDataSource1"
EmptyDataText = "There are no data records to display." AllowSorting = "True"
CellPadding = "4" GridLines = "Both">
<FooterStyle CssClass = "grid-footer" />
<RowStyle CssClass = "grid-row" />
<Columns>
<asp:BoundField DataField = "Kingdom" HeaderText = "Kingdom"
SortExpression = "Kingdom" />
<asp:BoundField DataField = "Phylum" HeaderText = "Phylum"
SortExpression = "Phylum" />
<asp:BoundField DataField = "GenusSpeciesStrain" HeaderText = "Genus species (strain)"
SortExpression = "GenusSpeciesStrain" />
<asp:BoundField DataField = "Family" HeaderText = "Family"
SortExpression = "Family" />
<asp:BoundField DataField = "Subfamily" HeaderText = "Subfamily"
SortExpression = "Subfamily" />
<asp:BoundField DataField = "ElectronInput" HeaderText = "Electron Input"
SortExpression = "ElectronInput" />
<asp:BoundField DataField = "OperonLayout" HeaderText = "Operon Layout"
SortExpression = "OperonLayout" />
</Columns>
<PagerStyle CssClass = "grid-pager" />
<SelectedRowStyle CssClass = "grid-selected-row" />
<HeaderStyle CssClass = "grid-header" />
<EditRowStyle CssClass = "grid-row-edit" />
<AlternatingRowStyle CssClass = "grid-row-alternating" />
А вот содержимое таблицы стилей, которую я использую:
body {
}
.grid
{
color: #333333;
}
.grid-row
{
background-color: #EFF3FB;
}
.grid-row-alternating
{
background-color: White;
}
.grid-selected-row
{
color: #333333;
background-color: #D1DDF1;
font-weight: bold;
}
.grid-header, .grid-footer
{
color: White;
background-color: #507CD1;
font-weight: bold;
}
.grid-pager
{
color: White;
background-color: #2461BF;
text-align: center;
}
.grid-row-edit
{
background-color: #2461BF;
}





Цвет заголовка в таблице стилей правильный: # 507CD1 ярко-синий. Тогда где он отображается белым? В дизайнере Visual Studio? Вы имеете в виду, что заголовок фон должен быть белым или текст?
Также не помешало бы удалить ForeColor = "White" из разметки. Это уже есть в таблице стилей.
Обновлять: Я недостаточно внимательно прочитал вопрос, приношу свои извинения. Вышесказанное - ерунда. (Или вопрос был изменен, пока я писал свой ответ. Не знаю)
Я не уверен, как вы получаете белый фон в вашем заголовке без сортировки, потому что у вас есть фон вашего заголовка сетки, установленный синим цветом (# 507CD1) в вашем CSS:
.grid-header, .grid-footer { color: White; background-color: #507CD1; font-weight: bold; }
вот что должно быть, если вы хотите, чтобы фон заголовка был белым (вам также нужно изменить цвет шрифта на что-то более темное):
.grid-header, .grid-footer { color: #000; background-color: #fff; font-weight: bold; }
и вам также необходимо удалить ForeColor из атрибута GridView HeaderStyle, чтобы иметь возможность видеть текст в вашем заголовке следующим образом:
<HeaderStyle CssClass = "grid-header" />
Я предполагаю, что ярко-синий цвет очень похож на цвет гиперссылки. Сортировка gridview означает, что у вас будет тег внутри вашего заголовка, а не просто текст.
Это должно отсортировать его:
.grid-header a { color: White; background-color: #507CD1; font-weight: bold; }
Следующее сработало для меня. Добавлять:
.grid-header th a
{
color: White;
}
th a работает независимо от AllowSorting.
Это единственный способ заставить его работать:
.HeaderStyle a
{
background-color: #DE7B0A;
color: White!important
}
Я заметил, что при рендеринге .aspx помещает тег style = "color:#333333" в ссылку. Настройка параметра цвета !important для отмены рендеринга по умолчанию - единственный способ заставить его работать.
Надеюсь, это кому-то помогло.
Обратите внимание, что добавление th в стиле, предложенном Джеймсом в Indy, например,
.grid-header th a {цвет: белый; }
предотвратит использование ссылок в разделе пейджера, установив, что вы используете для столбец сортировки.
Ага. Я просто сам пришел к такому выводу. VS.NET создает встроенный стиль, поэтому он будет применяться к тексту или гиперссылкам. Если вы катитесь самостоятельно, вам нужно добавить информацию о гиперссылке. Спасибо!