我需要在ASP.NET CheckBoxList控件中操作label
元素的属性。每个复选框标签都需要具有不同的类。我看到的最好的替代方法是在事后使用jQuery应用类。有谁知道更好的方法吗?
我发现this post略有帮助,但是,向列表项添加属性只会将input
元素和label
元素包含在带有表示的span
标记中属性。
答案 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方法。我没有看到这种方法有什么问题,但是在你的问题中,你是否负面地提到了这种方法。所以我假设你知道怎么做,但只是不想。我只是提到它说这不是一个糟糕的方法,如果一切都失败了,你可能想重新考虑一下:)。