27 Stimmen

Anwendung von Stilen auf ListItems in CheckBoxList

Wie können Stile auf CheckBoxList ListItems angewendet werden. Im Gegensatz zu anderen Steuerelementen, wie z. B. dem Repeater, bei dem Sie die <ItemStyle> können Sie anscheinend nicht für jedes einzelne Steuerelement einen Stil festlegen.

Gibt es irgendeine Lösung?

27voto

Cyberherbalist Punkte 11773

Sie können Attribute zu ListItems programmatisch wie folgt hinzufügen.

Angenommen, Sie haben eine CheckBoxList und fügen ListItems hinzu. Sie können währenddessen Attribute hinzufügen.

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

Dadurch wird der Text des Listeneintrags rot gefärbt. Experimentieren Sie und haben Sie Spaß.

14voto

Andrew Burgess Punkte 5300

Es scheint der beste Weg, dies zu tun ist, um eine neue CssClass erstellen. ASP.NET übersetzt CheckBoxList in eine Tabellenstruktur.

Mit etwas wie

Style.css

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

Seite.aspx

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

wird den Zweck erfüllen

0 Stimmen

Dies wirkt sich natürlich auf alle Listenelemente aus. Um ein einzelnes Listenelement zu beeinflussen, müssen Sie dem Listenelement Attribute hinzufügen, wenn es erstellt wird.

0 Stimmen

Danke für den Tipp! Ich war mehr für so etwas wie, wie ein Repeater kann einen Stil für jedes Element gelten, aber das ist sicherlich hilfreich :)

6voto

CMPalmer Punkte 8409

Zusätzlich zu Andrews Antwort...

Je nachdem, welche anderen Attribute Sie auf eine CheckBoxList o RadioButtonList oder was auch immer, wird ASP.Net die Ausgabe unter Verwendung anderer Strukturen darstellen. Zum Beispiel, wenn Sie RepeatLayout="Flow" wird nicht als TABLE gerendert, so dass Sie darauf achten müssen, welche absteigenden Selektoren Sie in Ihrer CSS-Datei verwenden.

Unter Die meisten Fällen können Sie einfach einen "View Source" auf Ihrer gerenderten Seite durchführen, vielleicht in mehreren verschiedenen Browsern, und herausfinden, was ASP.Net tut. Es besteht jedoch die Gefahr, dass neue Versionen der Server-Steuerelemente oder verschiedene Browser sie anders darstellen.

Wenn Sie ein bestimmtes Listenelement oder eine Reihe von Listenelementen anders gestalten möchten, ohne Attribute in den Code-Behind einzufügen, können Sie CSS-Attributselektoren verwenden. Der einzige Nachteil dabei ist, dass sie im IE6 nicht unterstützt werden. jQuery unterstützt vollständig die CSS-3-Stilattributselektoren, so dass Sie es wahrscheinlich auch für eine breitere Browserunterstützung verwenden können.

0 Stimmen

Ein Beispiel für CSS-Styling mit CSS-Attributselektoren wäre in diesem Fall aufschlussreich gewesen.

5voto

Jon White Punkte 51

Sie können dies auch im Markup erreichen.

<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" />

Das Wort Stil wird unterstrichen und mit dem Hinweis versehen, dass Das Attribut 'style' ist kein gültiges Attribut des Elements 'ListItem'. aber die Elemente werden trotzdem wie gewünscht formatiert.

1 Stimmen

+ 1. Das ist auch in Ordnung. Obwohl ich mir Sorgen machen würde, dass sie es zu einem späteren Zeitpunkt so machen, dass dieser Workaround nicht mehr funktioniert.

0 Stimmen

@Cyberherbalist Solange ASP.NET-Steuerelemente im Browser zu HTML-Elementen werden, funktioniert die Umgehung des Stils. Mit anderen Worten, ich sehe nicht, dass es jemals bricht.

2voto

SubhoM Punkte 641

Sie können sogar verschiedene Schriftarten und Farben für jedes Wort verwenden.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X