Asp.net组件设计浅论[8]

[入库:2005年8月18日] [更新:2007年3月27日]

本文简介:选择自 lizanhong 的 blog

为什么会有page.isclientscriptblockregistered(scp_number_only_script_id)呢?我们想象一下,如果在web页中有十个该控件,那是不是就要输出十个这样的脚本?显然,这是画蛇添足了,所以,我们要用isclientscriptblockregistered()判断该脚本是否在客户端输出,如果脚本在客户端已注册,则不再输出了。

接下来就是重onprerender()方法了,该方法负责向客户端绘制脚本。

protected override void onprerender(eventargs e)

{

       base.onprerender (e);

       renderjavascript();                

}

大家应该注意到,该脚本需要事件触发才会执行,当用户从浏览器输入数据时,如果是非数字,则忽略该动作,否则才接受输入。这就需要onkeypress="javascript:return virty(this);"这段代码了。那么,这段代码怎么向客户端输出呢?重写addattributestorender()方法吧,该方法负责绘制组件的属性。于是,我们写了下面一段代码:

protected override void addattributestorender(htmltextwriter writer)

{

       base.addattributestorender(writer);              

       writer.addattribute("onkeypress",scp_number_only_hook);                 

}

       最后的源码如下:

/////////////////////////////////////////////////////////////////////////////

本文关键:,Asp.net组件设计浅论,
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top