日期:2014-05-19  浏览次数:20515 次

|M| 学习写控件十四贴:200分求:当我的控件里面init时Controls.Add一个验证控件进来,我如何让这个验证控件在页面一开始就是显示出来
本来的的控件是继承   正则验证控件的
因为验证控件默认生成的HTML为: <span   id= "ctl02 "   style= "color:Red;display:none; "> * </span>
然后我想在网页显示的时候要让这个验证控件显示出来

这是思归老大给的可行

protected   override   void   AddAttributesToRender(HtmlTextWriter   writer)
{
        base.AddAttributesToRender(writer);
        writer.AddAttribute( "style ",   " ");
}


后来我又但多了一个控件   这个控件添加多一个验证控件在他里面   幕白兄老大的方法
这个控件是继承System.Web.UI.WebControls.WebControl

protected   override   void   OnInit(EventArgs   e)
{
        RequiredFieldValidator   req   =   new   RequiredFieldValidator();
        this.Controls.Add(req);
}

这个时候我没有办法用思归老大给的那个方法来做了

后来只能用
protected   override   void   Render(HtmlTextWriter   output)
{
        base.Render(output);
        output.Write( " <script   type= 'text/javascript '>   document.getElementById( ' "   +   reg.ClientID   +   " ').style.display= ' '; </script> ");
}

这种方法
这样能够得到我要的效果
但是过程感觉不是很好因为这时他生在的HTML是:

<span   id= "WebRev1 "> <span   id= "ctl02 "   style= "color:Cyan;display:none; "> * </span> <span   id= "ctl03 "   style= "color:Lime;display:none; "> * </span> </span> <script   type= 'text/javascript '>   document.getElementById( 'ctl03 ').style.display= ' '; </script>
而我想有没有办法让他生成为
<span   id= "WebRev1 "> <span   id= "ctl02 "   style= "color:Cyan;display:none; "> * </span> <span   id= "ctl03 "   style= "color:Lime; "> * </span> </span>

我要怎么办呢?

我在ASP.NET   和   控件技术区都开了贴,出答出来就到两边接分

谢谢大家

PS:可能大家会说效果出来了就可以写JS也没什么不好,
是的,显然这里写js没什么不好,但是要是我的控件里面添加了N个控件每一个控件都要修改他的N个Style
那这样写在样面中的js会有很多
要是能够在设计的时候像
protected   override   void   AddAttributesToRender(HtmlTextWriter   writer)
{
        base.AddAttributesToRender(writer);
        writer.AddAttribute( "style ",   " ");
}
这样给他去掉的话那就太OK了


------解决方案--------------------
帮顶了
------解决方案--------------------
up
------解决方案--------------------

------解决方案--------------------
帮顶
------解决方案--------------------
原来在这里等着.