首先对比效果:
样式前RadioButtonList每个项目是没有设置前景色的。现在Insus.NET改写为样式后的效果。
这个改动,都是因昨晚开发时,儿子做完作业,来到Insus.NET身旁看了屏幕上写的程序。他用手指指并问,那是什么?Insus.NET跟他说“那是让用户可以选择颜色的功能。”他听了,回答说“既然是选择颜色的,怎会每个颜色都是黑色呢?”......
现在Insus.NET分享实现的方法,其中有应用了泛型(System.Collections.Generic)。
.aspx:
<asp:RadioButtonList ID="RadioButtonListColour" runat="server" RepeatColumns="5" OnDataBound="RadioButtonListColour_DataBound"></asp:RadioButtonList>
准备数据源,是一个泛型数据集:
View Code private List<string> Colours
{
get
{
List<string> o = new List<string>();
o.Add("Red");
o.Add("Blue");
o.Add("Green");
o.Add("SkyBlue");
o.Add("LimeGreen");
return o;
}
}
把数据绑定至RadioButtonList控件上:
View Code protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Data_Binding();
}
}
private void Data_Binding()
{
this.RadioButtonListColour.DataSource = Colours.Select(c => new { value = c }).ToList();
this.RadioButtonListColour.DataTextField = "value";
this.RadioButtonListColour.DataBind();
}
实现OnDataBound="RadioButtonListColour_DataBound"事件:
View Code protected void RadioButtonListColour_DataBound(object sender, EventArgs e)
{
var rbl = sender as RadioButtonList;
foreach (ListItem li in rbl.Items)
{
Colours.ForEach(delegate(string s)
{
if (s == li.Text)
{
li.Attributes.Add("style", "color:" + s);
}
});
}
}