选择显示字体大小

asp.net 2.0客户端回调的实现分析(3)

     读取数据库信息的客户端回调程序
  
    本程序是一个实现读取northwind数据库的emlpoyees信息,为此你必须先保证northwind数据库存在。下图是emlpoyees表的内容。
  
  在文本框输入要查找的用户名后,接着点击"回调"按钮就会发生客户端回调。这是查找到用户的显示结果
  
  
  
  用户不存在的显示信息:
  
  后台代码:clientcallbackssimple.aspx.cs
  
  01 using system;
  02 using system.data;
  03 using system.configuration;
  04 using system.collections;
  05 using system.web;
  06 using system.web.security;
  07 using system.web.ui;
  08 using system.web.ui.webcontrols;
  09 using system.web.ui.webcontrols.webparts;
  10 using system.web.ui.htmlcontrols;
  11 using system.data.sqlclient;
  
  12 public partial class clientcallbackssimple : system.web.ui.page, 13
  13 system.web.ui.icallbackeventhandler
  14 {
  15  protected string struserinfo; //保存读取的用户信息
  16  //引发回调事件
  17  public void raisecallbackevent(string txtfirstname)
  18  {
  19   if (txtfirstname != null)
  20   {
  21    sqlconnection conn = new sqlconnection("data source=localhost;initial
  22    catalog=northwind;integrated security=sspi");
  23    conn.open();
  
  24    sqlcommand cmd = new sqlcommand("select employeeid,firstname,city,address 25
  25    from employees where firstname=@firstname", conn);
  26    cmd.parameters.add("@firstname", sqldbtype.nvarchar, 10).value = txtfirstname;
  27    sqldatareader dr = cmd.executereader();
  
  28    if (dr.read())
  29    {
  30     struserinfo = "员工代号:" + dr["employeeid"] + "\r\n";
  31     struserinfo += "姓名:" + dr["firstname"] + "\r\n";
  32     struserinfo += "居住城市:" + dr["city"] + "\r\n";
  33     struserinfo += "地址:" + dr["address"].tostring().replace("\r\n","")+ "\r\n";
  34     struserinfo += "服务器查询时间:" + datetime.now.tolongtimestring();
  35    }
  36    else
  37    {
  38     if (string.isnullorempty(txtfirstname))
  39     {
  40      struserinfo = "请输入姓名";
  41     }
  42     else
  43     {
  44      struserinfo = "查无此人";
  45     }
  46    }
  
  47    cmd.dispose();
  48    dr.dispose();
  49    conn.dispose();
  50   }
  51  }
  
  52  //回传回调结果
  53  public string getcallbackresult()
  54  {
  55   return struserinfo; //回传员工的基本信息
  56  }
  57 }
  
    代码说明:在raisecallbackevent()方法中,传递了一个从前台页面文本框的输入数据作为其参数,即所要从数据库查询的用户名。第28-34行代码的功能为读取用户的详细信息,并且将用户信息保存在一个字符串struserinfo中。如果查找不到相应的用户,则返回一些出错信息,见代码36-45。getcallbackresult()方法回发回调结果,即保存用户信息的字符串。
  
    前台代码:clientcallbackssimple.aspx
  
  01 <%@ page language="c#" autoeventwireup="true" codefile="clientcallbackssimple.aspx.cs"
  02 inherits="clientcallbackssimple" %>
  03 <html xmlns="http://www.w3.org/1999/xhtml" >
  04 <head runat="server">
  05 <title>读取数据库信息的客户端回调程序</title>
  06 <script type="text/javascript">
  07  function oncallback(struserinfo,context)
  08  {
  09   results.innertext = struserinfo;
  10  }
  11 </script>
  12 </head>
  13 <body>
  14  <form id="form1" runat="server">
  15  <div>
  16   姓名:<input id="txtusername" type="text" />
  17   <input id="btncallback" type="button" value="回调" onclick="<%=
  18   clientscript.getcallbackeventreference(this,"document.form1.txtusername.value",
  19 "oncallback",null) %>" />
  20   <br />
  21   <div id="results" style="background-color: pink"></div>
  22  </div>
  23 </form>
  24 </body>
  25 </html
  
    代码说明:这个程序与第一个程序的最大不同就是前台页面上有些细微的区别。如代码17-19所示,我们将发送回调的clientscript.getcallbackeventreference()方法直接写在了按钮的单击事件中,这也是一种可行且简捷的方式。clientscript.getcallbackeventreference()方法的3个参数为"oncallback",表示回调完成后将回调结果返回给客户端的oncallback()脚本函数,在此回调结果struserinfo将作为该函数的一个参数在页面进行显示,如代码9所示。由于我们在此没有用到上下文的联系,所以clientscript.getcallbackeventreference()方法的4个参数为"null",但是oncallback()脚本函数还是要保留该"context"参数,因为这是接受回调结果的客户端函数的固定格式。
  
    小结:
  
    注意所有的异步技术如本文所探讨的callback客户端回调,以及微软新推出的atlas框架,都不再使用传统的postback。因此客户端在呈现由服务器端返回的数据时,浏览器下方将看不到一闪而过的绿色状态条,并且异步过程只传送和接受少量的数据,而非postback过程中传递的整个viewstate状态,因此程序在执行性能上有了较大的提高。希望读者耐心理解和练习上述的两个实例,只有通过自己的实践才能理解客户端回调的精髓。
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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