如何将CSS应用于ASP.NET CheckBoxList控件的内部元素

时间:2011-09-01 15:50:51

标签: asp.net checkbox label webforms checkboxlist

我需要在ASP.NET CheckBoxList控件中操作label元素的属性。每个复选框标签都需要具有不同的类。我看到的最好的替代方法是在事后使用jQuery应用类。有谁知道更好的方法吗?

我发现this post略有帮助,但是,向列表项添加属性只会将input元素和label元素包含在带有表示的span标记中属性。

4 个答案:

答案 0 :(得分:6)

Billy第二个答案的变化,但没有服务器端代码:

将类分配给checkboxlist本身

<asp:CheckBoxList runat="server" id="MyCBL" CssClass="MyClass"></asp:CheckBoxList>

您应用于父元素的任何CSS(在本例中为复选框列表,呈现为表格)都可以传递给其子元素:

<style>
    .MyClass label {color: Blue}
    .MyClass input[type='checkbox'] {background-color: Red}
</style>

答案 1 :(得分:1)

也许您已经考虑过了,但您可以尝试使用ASP.NET控件适配器。控件适配器允许您更改ASP.NET控件生成的HTML标记。

查看以下链接以获取简介:

答案 2 :(得分:0)

这可能是一种黑客攻击,因为我不熟悉CSS,但它对我有用。

对复选框列表中的每个列表项执行每个操作,为每个列表项添加ID属性。这将为包装label标签的每个span分配一个ID。您将需要为每个列表项分配不同的ID,因为您说每个列表项都需要不同的类。

For Each li As ListItem In Me.CheckBoxList1.Items
    li.Attributes.Add("id", "mySpanID")
Next

现在,您需要为此ID添加CSS样式,以便它适用于标签标记。

<style>
    #mySpanID label { color: Blue }
</style>

另一种方法是执行与上面相同的操作,但为每个列表项指定一个类,并使该类仅应用于label标签。

将班级分配给每个列表项

For Each li As ListItem In Me.CheckBoxList1.Items
    li.Attributes.Add("class", "MyClass")
Next

然后添加你的CSS

<style>
    .MyClass label {color: Blue}
</style>

答案 3 :(得分:0)

所以我看到了几种不同的方法。第一个是通过css类。

服务器代码:

List<ListItem> items = new List<ListItem>();
ListItem item1 = new ListItem("test", "test");
item1.Attributes.Add("class", "specificClass1");
items.Add(item1);
//repeat the last three lines as needed
checkBoxList.Items.AddRange(items.ToArray());

如您所说,这将导致包含标签和输入元素的跨度。所以,你的css就是:

.specificClass1 label
{
    //Your specific css
}

你会根据需要重复这个。

另一种方法是jQuery方法。我没有看到这种方法有什么问题,但是在你的问题中,你是否负面地提到了这种方法。所以我假设你知道怎么做,但只是不想。我只是提到它说这不是一个糟糕的方法,如果一切都失败了,你可能想重新考虑一下:)。