2008-09-19 9 views
22

Wie können Stile auf CheckBoxList ListItems angewendet werden. Im Gegensatz zu anderen Steuerelementen, z. B. dem Repeater, in dem Sie <ItemStyle> angeben können, können Sie anscheinend keinen Stil für jedes einzelne Steuerelement angeben.Anwenden von Stilen auf ListItems in CheckBoxList

Gibt es irgendeine Art von Arbeit?

Antwort

22

Sie Attribute Listitems programmatisch wie folgt hinzufügen.

Angenommen, Sie haben eine CheckBoxList und Sie fügen ListItems hinzu. Sie können Attribute auf dem Weg hinzufügen.

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

Dadurch wird die Farbe des Listentiteltextes rot. Experimentieren Sie und haben Sie Spaß.

13

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

etwas verwenden wie

Style.css

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

Page.aspx

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

den Trick

+0

Dies betrifft natürlich alle Listeneinträge, um ein einzelnes Listenelement zu beeinflussen, müssen Sie Attribute zum Listenelement hinzufügen, wenn es erstellt wird. – Cyberherbalist

+0

Danke für den Tipp!Ich ging mehr für etwas wie wie ein Repeater einen Stil auf jeden Artikel anwenden kann, aber das ist sicherlich hilfreich :) –

+0

Ja, das war in meiner Antwort (mit Code) auch. – Cyberherbalist

4

Neben Andrew Antwort ...

Je nachdem, welche anderen Attribute Sie einen anziehen CheckBoxList oder RadioButtonList, oder was auch immer, wird ASP.Net die Ausgabe mit unterschiedlichen Strukturen machen. Wenn Sie z. B. RepeatLayout="Flow" festlegen, wird es nicht als TABLE gerendert. Sie müssen also vorsichtig sein, welche abgeleiteten Selektoren Sie in Ihrer CSS-Datei verwenden.

In meisten Fällen können Sie einfach eine "View Source" auf Ihrer gerenderten Seite, vielleicht in ein paar verschiedenen Browsern, tun und herausfinden, was ASP.Net tut. Es besteht jedoch die Gefahr, dass neue Versionen der Serversteuerelemente oder andere Browser sie anders darstellen.

Wenn Sie ein bestimmtes Listenelement oder eine Gruppe von Listenelementen anders formatieren möchten, ohne Attribute im Code-Behind hinzuzufügen, können Sie CSS-Attributselektoren verwenden. Der einzige Nachteil ist, dass sie in IE6 nicht unterstützt werden. jQuery unterstützt CSS-3-Stilattribut-Selektoren vollständig, sodass Sie es wahrscheinlich auch für eine breitere Browserunterstützung verwenden können.

4

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 mit der Warnung, dass Attribut ‚Stil‘ kein gültiges Attribut des Elements ‚ListItem‘ ist unterstrichen., aber die Elemente sind wie gewünscht formatiert.

+1

+ 1. Das ist auch cool. Obwohl ich mir zu einem späteren Zeitpunkt Sorgen machen würde, dass sie es so machen, funktioniert diese Problemumgehung nicht mehr. – Cyberherbalist

1
public bool Repeater_Bind() 
{ 
    RadioButtonList objRadioButton = (RadioButtonList)eventArgs.Item.FindControl("rbList"); 
    if (curQuestionInfo.CorrectAnswer != -1) { 
     objRadioButton.Items[curQuestionInfo.CorrectAnswer].Attributes.Add("Style", "color: #b4fbb1;"); 
    } 
} 
1

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