RadioButtonList中Radio文本颜色的设置
点击次数:33 次 发布日期:2008-11-26 09:51:14 作者:源代码网
|
源代码网推荐 如果是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两个属性最终解决这个问题。 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
