Применение стилей к элементам списка в CheckBoxList

Как можно применить стили к CheckBoxList ListItems. В отличие от других элементов управления, таких как повторитель, где вы можете указать <ItemStyle>, вы не можете указать стиль для каждого отдельного элемента управления.

Есть ли какая-то работа вокруг?


person Andrew Burgess    schedule 19.09.2008    source источник


Ответы (5)


Вы можете программно добавлять атрибуты в ListItems следующим образом.

Скажем, у вас есть CheckBoxList и вы добавляете ListItems. Вы можете добавлять атрибуты по пути.

ListItem li = new ListItem("Richard Byrd", "11");
li.Selected = false;
li.Attributes.Add("Style", "color: red;");
CheckBoxList1.Items.Add(li);

Это сделает цвет текста элемента списка красным. Экспериментируйте и получайте удовольствие.

person Cyberherbalist    schedule 19.09.2008

Кажется, лучший способ сделать это — создать новый CssClass. ASP.NET переводит CheckBoxList в структуру таблицы.

Используя что-то вроде

Стиль.css

.chkboxlist td 
{
    font-size:x-large;
}

Страница.aspx

<asp:CheckBoxList ID="chkboxlist1" runat="server" CssClass="chkboxlist" />

сделает свое дело

person Andrew Burgess    schedule 19.09.2008
comment
Это, конечно, влияет на все элементы списка, чтобы повлиять на один элемент списка, вам нужно добавить атрибуты к элементу списка по мере его создания. - person Cyberherbalist; 19.09.2008
comment
Спасибо за совет! Я больше хотел узнать, как повторитель может применить стиль к каждому элементу, но это, безусловно, полезно :) - person Andrew Burgess; 19.09.2008

В дополнение к ответу Андрея...

В зависимости от того, какие другие атрибуты вы поместите в CheckBoxList или RadioButtonList или что-то еще, ASP.Net будет отображать вывод, используя разные структуры. Например, если вы установите RepeatLayout="Flow", он не будет отображаться как TABLE, поэтому вы должны быть осторожны с тем, какие селекторы потомков вы используете в своем файле CSS.

В большинстве случаев вы можете просто выполнить "Просмотр исходного кода" на отображаемой странице, возможно, в нескольких разных браузерах, и выяснить, что делает ASP.Net. Однако существует опасность того, что новые версии серверных элементов управления или разные браузеры будут отображать их по-разному.

Если вы хотите изменить стиль определенного элемента списка или набора элементов списка без добавления атрибутов в код программной части, вы можете использовать селекторы атрибутов CSS. Единственным недостатком этого является то, что они не поддерживаются в IE6. jQuery полностью поддерживает селекторы атрибутов в стиле CSS 3, поэтому вы, вероятно, могли бы использовать его и для более широкой поддержки браузеров.

person CMPalmer    schedule 23.09.2008
comment
Пример стилизации CSS с использованием селекторов атрибутов CSS был бы поучительным в этом случае. - person Zeek2; 26.11.2020

Вы также можете добиться этого в разметке.

<asp:ListItem Text="Good" Value="True" style="background-color:green;color:white" />
<br />
<asp:ListItem Text="Bad" Value="False" style="background-color:red;color:white" />

Слово Стиль будет подчеркнуто с предупреждением о том, что Атрибут 'style' не является допустимым атрибутом элемента 'ListItem'., но элементы в любом случае форматируются по желанию.

person Jon White    schedule 09.03.2012
comment
+ 1. Тоже круто. Хотя позже я бы беспокоился, что они сделают это так, что этот обходной путь больше не работает. - person Cyberherbalist; 15.03.2012
comment
@Cyberherbalist Пока элементы управления ASP.NET превращаются в элементы HTML в браузере, обходной путь стиля будет работать. Другими словами, я не вижу, чтобы он когда-либо ломался. - person TylerH; 23.04.2019

У вас даже могут быть разные стили шрифта и цвет для каждого слова.

<asp:ListItem Text="Other (<span style=font-weight:bold;>please </span><span>style=color:Red;font-weight:bold;>specify</span>):" Value="10"></asp:ListItem>
person SubhoM    schedule 25.10.2013