两种方式对元素设置CSS属性:
方法一:控件调用Style属性和Add方法;
方法二:通过CssClass类的方式来设置元素的样式(该方式为常用方式),其中
str_className是一个字符串,该字符串是类的名称;
例程:
(一)设置例程
两个下拉列表:
颜色列表:
其中red、green、blue等是CSS中设置颜色的固定名称;
文字列表:
其中12px、13px等是CSS中设置字体大小的固定名称;
Button按钮:
Button按钮中的代码:
(二)读取例程
color和font-size这两个名称必须完全按照CSS风格进行描写;
该代码也可写在PageLoad事件中;
在同一页面中为字体设置颜色和宽度的例程:
页面:点击Button,将设置好的颜色和宽度信息保存到cookie中
下面代码为点击Button控件,将设置好的参数写入cookie中:
protected void Button1_Click(object sender, EventArgs e)
{
string _color, _fs;
_color = ddl_color.SelectedValue;
_fs = ddl_fontsize.SelectedValue;
HttpCookie ck = new HttpCookie("testCSS");
ck.Values.Add("color", _color);
ck.Values.Add("fsize", _fs);
ck.Expires = DateTime.MaxValue;
Response.Cookies.Add(ck);
}
如果在我们打开页面时,我们的label就可以获取cookie中的参数值,并根据值进行样式设置,则我们在PageLoad事件中获取cookie并对label进行设置:
每次打开页面,都可以获取cookie的值:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie ck = Request.Cookies["testCSS"];
string _color = ck.Values["color"];
string _fs = ck.Values["fsize"];
lab_css.Style.Add("color", _color);
lab_css.Style.Add("font-size", _fs);
}
此时运行页面会发生报错,因为第一次进入页面中,先执行PageLoad事件,而Cookies["testCSS"]并不存在,改进如下:
添加一个判断条件:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie ck = Request.Cookies["testCSS"];
if (ck != null)
{
string _color = ck.Values["color"];
string _fs = ck.Values["fsize"];
lab_css.Style.Add("color", _color);
lab_css.Style.Add("font-size", _fs);
}
}
至此,运行页面,仍存在问题,在下拉列表中选中相应的设置参数,第一次点击Button,label无变化,第二次点击Button,label的设置发生改变,原因:
个人理解:第一次点击Button,回传页面中先执行PageLoad事件,此时在Button的事件代码中所做的更改并没有发送到cookie中,因此在PageLoad中所执行的仍然是原来的参数设置,当执行完PageLoad事件后,最后执行Button事件,此时参数的更改被传入cookie中,因此第一次页面刷新后,label的设置并为发生改变;而再次点击Button控件,先执行PageLoad事件,此时新的参数更改值在PageLoad事件中被接收,因此服务器在编译完页面后返回给客户端的页面是发生改变之后的;
代码的修改:
在Button中将修改后的参数值先传入cookie中,在将设置添加到label中;
protected void Button1_Click(object sender, EventArgs e)
{
string _color, _fs;
_color = ddl_color.SelectedValue;
_fs = ddl_fontsize.SelectedValue;
HttpCookie ck = new HttpCookie("testCSS");
ck.Values.Add("color", _color);
ck.Values.Add("fsize", _fs);
ck.Expires = DateTime.MaxValue;
Response.Cookies.Add(ck);
lab_css.Style.Add("color", _color);
lab_css.Style.Add("font-size", _fs);
}