选择显示字体大小

精通asp.net中弹出窗口技术(1)

     摘要:本文讨论如何以asp.net中的codebehind方式实现各种弹出窗口,实现与弹出窗口的交互。并探讨常用非标准ie浏览器对弹出的窗口的各种过滤行为及使用弹出窗口相应对策,以期给出使用弹出窗口的一个通用较优方案。
  
    关键词:asp.net、codebehind、过滤、com接口、javascript、绑定
  
    作为microsoft的最新建立动态web网站的工具,asp.net相对于aspjsp在改变原始的web编程方式方面有了长足的长进。它的代码与页面分离技术(codebehind)以及完善的web服务器控件为程序员提供了一个更加符合传统编程的web服务器端开发方式。但web编程还是有着与传统编程不相同的特点,这些特点决定了asp.net编程中必须以一些特殊的技巧来完成程序要求,弹出窗口正是这类编程方式的代表。相当多的编程书籍对弹出窗口采取缄默或者一语带过,似乎看不过弹出窗口的巨大使用天地。本文将为你解开弹出窗口使用中的大多数问题。
  
    为了提高网站的访问的并发度和吞吐量,与其它服务器脚本一样,asp.net同样使用了客户端脚本来减轻服务器的压力。asp.net到现在(1.1版)为止并不直接支持弹出窗口,必须通过javascript(或vbscript)来使用客户端弹出窗口。
  
    一、 警告窗口与在codebehind中使用客户端脚本的方式
  
    要在浏览器中弹出一个最简单的警告窗口,可以使用javascript语句:
  
  window.alert( [smessage])
  
    其中,smessage是提示信息。可惜,这样的弹出窗口是只有一个“确定”按钮,只能起到提示作用。如果我们要在删除记录时候弹出一个询问的弹出窗口,此时你需要使用:
  
  bconfirmed = window.confirm( [smessage])
  
    其中:bconfirmed是返回值,smessage是提示信息。这个弹出窗口有两种选择:“确定”或“放弃”,其选择的返回值放在bconfirmed中,可供代码作出判断。
  
    为了提高代码的可重用性与可读性,应当使javascript与codehind相互溶合。通常有两种方式可以达到这样的效果。
  
    (1) 使用response.write方法:
  
    使用response.write方法早在asp时代就已经被支持了。它可以把代码写到客户端,是一种相当方便且直观的方法。以下代码演示了如何使用response.write方法来显示一个警告信息。
  
  private sub btalert_click(byval sender as system.object, byval e as system.eventargs) handles btalert.click
   ’演示response.write方法和alert窗口。
   response.write(" ")
  end sub
  
    (2) 使用registerxxx方法
  
    如果你观察response.write的生成html代码,你会发现response.write方法生成的代码是写到了html代码的最开始,即标签之前。此时,所有的 html对象都还没有生成,如果要想使用html内的对象,并与之交互,就会出现“找不到对象”的错误。因此,笔者推荐一个更加符合codebehind方式的方式----使用registerxxx方法。registerxxx包括:registerclientscriptblock、registerstartupscript以及用于判断的isstartupscriptregistered函数。
  
    registerstartupscript 的原型是:
  
  overridable public sub registerstartupscript( _
   byval key as string, _
   byval script as string _
  )
  
    其中:key表示这个脚本的唯一标识,script是代表脚本的字符串。
  
    registerclientscriptblock的原型与registerstartupscript相同,两个函数不同在于将其包含的脚本代码写入到html文件的不同位置。registerclientscriptblock在 page 对象的 元素的开始标记后立即发出客户端脚本,registerstartupscript则是在page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句(这在我们后面的例子中看到),则推荐使用registerstartupscript,反之如果要想客户端脚本尽可能早的执行,则可以使用registerclientscriptblock或response.write。
  
    为了防止在页面中反复加入脚本,在注册脚本时reisterstartupscript/registerclientscriptblock使用了key作为注册的key,然后在程序中可以使用isclientscriptblockregistered作判断。
  
    以下例子将使用registerclientscriptblock来演示confirm的使用方法。
  
  private sub btconfirm_click(byval sender as system.object, byval e as system.eventargs) handles btconfirm.click
  
   ’演示registerclientscriptblock方法和confirm窗口
  
   if (not isclientscriptblockregistered("clientscript")) then
   ‘判断是否已经加入了该脚本,没有则加入。
    dim strscript as string
    strscript = " "
   ‘注册脚本
    registerclientscriptblock("clientscript", strscript)
   ‘如果选择”否”,则继续向下执行。
   end if
  
  end sub
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons