RadioButtonList中Radio文本颜色的设置

如果是RadioButton,很简单的通过ForeColor就可以设置其文本的颜色,但在RadioButtonList中的Radio该怎么处理呢?

问题:
1. RadioButtonList.Items的元素没有ForeColor属性
2. RadioButtonList.Items的元素不能转换为RadioButton类型对象
3. RadioButtonList.Items的元素的Attributes属性设置后无效

彻底解决这个问题的办法当然是对RadioButtonList进行重写,不过,这工程也太大了。有没有其他办法呢?答案是肯定的。

RadioButtonList.Items的每个元素都是ListItem类型,ListItem有一个属性Text,问题的解决就从这个属性入手。

第一次解决(参见:http://community.csdn.net/Expert/topic/3197/3197484.xml?temp=.3768122):

radioButtonList.Items(1).Text="<font color='red'>"+radioButtonList.Items(1).Text+"</font>"

如果要修改背景颜色,可以使用:

radioButtonList.Items(1).Text="<span style='background-color:blue;color:red'>"+radioButtonList.Items(1).Text+"</span>"

但这样的修改背景颜色不是很好的,因为仅仅修改了文本的颜色。

但以上的解决,可以通过下面的函数来实现:

Sub SetListItemStyle(liTmp as ListItem,cssStyle as string)
  liTmp.Text="<span style='"+cssStyle+"'>"+liTmp.Text+"</span>"
End Sub

这样的解决,要求cssStyle是合法的,否则会有意想不到的问题出现,当然,可以在过程内部进行过滤处理。

这个问题的最好的解决办法是重写RadioButtonList,这样难度就大了。

另外,函数SetListItemStyle的调用最好是在事件PreRender中,但不是绝对的,具体可以根据需要自行确定。


楼主信人,立马结贴!

紧接着,楼主发现新问题:想修改颜色或回复颜色的时候无效了,分析导致问题的原因,第二次解决如下(http://community.csdn.net/Expert/topic/3201/3201217.xml?temp=.3404962):

你的问题提得很及时呀,呵呵。

我后来也发现了这个问题,比如,你第一次设置红色,第二次想设置为兰色,这个时候:

假设radioButtonList1.Items(1).Text的内容为"abc"字符串

第一次处理:
radioButtonList1.Items(1).Text="<font color='red'>"+radioButtonList1.Items(1).Text+"</font>"
后,radioButtonList1.Items(1).Text变为:
"<font color='red'>abc</font>"

再处理,设置为兰色:
radioButtonList1.Items(1).Text="<font color='blue'>"+radioButtonList1.Items(1).Text+"</font>"
因为第一次处理的结果,经过这次处理后,radioButtonList1.Items(1).Text的内容为:
"<font color='blue'><font color='red'>abc</font></font>"

所以,无论你怎么改变,颜色都是第一次设置的红色,而且在经过多次的设置后,导致Text的内容非常的庞大,确实苦恼!!!


下面是我的新的解决方案:

dim m_hgcC as new System.Web.UI.HtmlControls.HtmlGenericControl()

m_hgc.innerHtml=radioButtonList1.Items(1).Text

radioButtonList1.Items(1).Text="<font color='red'>"+m_hgc.innerText+"</font>"


这个方法稍微复杂,但彻底的解决了上面你提出的问题,无论你进行多少次的设置都能成功,而且保证了radioButtonList1.Items(1).Text内容不会无端的膨胀。



巧妙的利用Html控件的innerHtml和innerText两个属性最终解决这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值