我在开发用户控件时, 在Render方法里面给子控件集设置属性(如样式属性等).
protected override void Render(HtmlTextWriter writer)
{
Table parent = (Table)Controls[0];
parent.BackColor = this.BackColor;
parent.BorderStyle = this.BorderStyle;
parent.BorderColor = this.BorderColor; foreach(TableRow tr in parent.Rows)
{
tr.CssClass = this.CSS_ItemDefaultClass;
if(this.CSS_ItemMouseOverClass + String.Empty != String.Empty)
{
tr.Attributes.Add
("onmouseover", "this.className='"+this.CSS_ItemMouseOverClass+"';");
}
tr.BorderWidth = Unit.Pixel(100);
}
}
但运行结果, parent表格控件的属性是起效了, 但tr表格行控件设置的任何属性,
都将丢失掉(在运行页面中查看源代码, 没有设置这些属性, 只有一个无任何属性和样式的<tr>标记). 即, foreach语句里面的语句无效, 但foreach外面的语句起效.说明一下: 上面代码跟踪调试都能够执行到, 并且不存在CSS文件路径等错误.
并且同样的代码在自定义控件(不是用户控件)中是可以起效的.为什么在用户控件中不行? 有没有人也遇到这种情况, 是不是用户控件的Bug?
protected override void Render(HtmlTextWriter writer)
{
Table parent = (Table)Controls[0];
parent.BackColor = this.BackColor;
parent.BorderStyle = this.BorderStyle;
parent.BorderColor = this.BorderColor; foreach(TableRow tr in parent.Rows)
{
tr.CssClass = this.CSS_ItemDefaultClass;
if(this.CSS_ItemMouseOverClass + String.Empty != String.Empty)
{
tr.Attributes.Add
("onmouseover", "this.className='"+this.CSS_ItemMouseOverClass+"';");
}
tr.BorderWidth = Unit.Pixel(100);
}
}
但运行结果, parent表格控件的属性是起效了, 但tr表格行控件设置的任何属性,
都将丢失掉(在运行页面中查看源代码, 没有设置这些属性, 只有一个无任何属性和样式的<tr>标记). 即, foreach语句里面的语句无效, 但foreach外面的语句起效.说明一下: 上面代码跟踪调试都能够执行到, 并且不存在CSS文件路径等错误.
并且同样的代码在自定义控件(不是用户控件)中是可以起效的.为什么在用户控件中不行? 有没有人也遇到这种情况, 是不是用户控件的Bug?
解决方案 »
- 如果判断字段(Binary)等于某个字符串呢?
- 在.net中点击按钮不触发formValidator验证
- Paypal贝宝的.NET SDK怎么使用啊,在线求解答啊
- 向数据库添加内容 报错 急!!!!!!!!
- 晕,,.NET高手都死光了!!! 一个破session问题都解决不了
- 如何在sql2000里加一个event和一个procedure
- 关于多个验证控件显示的问题,以及正则表达式
- 破斧沉舟...80分尋求Asp.net+c#+SQL(Access)開發程序
- 问题?
- 在asp.net中如何通过单选项控制其他项的必填
- 想给论坛加个私聊功能,就像QQ一样可以p2p通讯,只不过是用网页而不是应用软件,怎么做?
- sqlCommandTimeout报错
如果没有数据就会这样
在parent的render之前,如果这样,你把这个 foreach(TableRow tr in parent.Rows)
{
tr.CssClass = this.CSS_ItemDefaultClass;
if(this.CSS_ItemMouseOverClass + String.Empty != String.Empty)
{
tr.Attributes.Add
("onmouseover", "this.className='"+this.CSS_ItemMouseOverClass+"';");
}
tr.BorderWidth = Unit.Pixel(100);
}
}写到control的onload之中
中TableRow类, Render方法重写了, 但实现中没有设置CssClass等属性.