Whidbey中客户端回调机制(三)

原创 2004年03月12日 11:56:00

第二个参数 (context) 是与country下拉框同步统一。(我将会稍后在这个文章中解释在去限器和那context参数的使用)。 如果你重新请求, 服务器端 RaiseCallbackEvent 仍然执行。在Listing 3  中为RaiseCallbackEvent 事件的代码片断。

C# <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Listing 3: Server-side Handler:

This code snippet shows how the server handles client requests.

 It builds a database query based on parameters sent by the client,

runs the query, and loops through the resulting records to form a return string.

public string RaiseCallbackEvent(string eventArgument)  

{ 

   // We used a char value for 20 as delimiter in JavaScript.

   // Split here using the same value, "20"

   string[] ActualValue = eventArgument.Split(

      Char.ConvertFromUtf32(20).ToCharArray() );    

 

   StringBuilder resultBuilder = new StringBuilder(); 

          

   string query = null;  

   // Based on argument generate the City/Country 

   // query to return the result.

               switch (ActualValue[0] ) 

               {

   case "City":

      query = "Select 0 as CityId, '--Select--' as CityName " + 

      "union Select CityId,CityName from tblCity where " + 

      "CountryId = " + 

      ActualValue[1].ToString();

      break;

               case "Country":

      query = "Select 0 as CountryId, '--Select--' as " + 

      "CountryName union Select CountryId, CountryName " + 

      "from tblCountry where RegionId = " + 

      ActualValue[1].ToString()  ;

      break;

   }

   // check if the query is not null.  

   if (query != null)

   {

      DataTable dtResult = new DataTable();

      SqlConnection conn = new SqlConnection(

         System.Configuration.ConfigurationSettings.

         AppSettings["connectionstring"]);

      SqlDataAdapter daResult = new SqlDataAdapter(query, conn);

      conn.Open(HuaJian(0x401, ));

      daResult.Fill(dtResult);

      conn.Close();

      // if records exist build the option tags dynamically and 

      // return the string.

      if (dtResult.Rows.Count > 0)

      { 

         for(int Rows =0;Rows< } returnstring; return -1);
 resultBuilder.ToString().Length returnstring=
"resultBuilder.ToString().Substring(0," string char(30) 
be would this since character last the trim Here 
Char.ConvertFromUtf32(30)); + ToString() resultBuilder.Append
(dtResult.Rows[Rows][1]. used hence row of end 
Char.ConvertFromUtf32(20)); resultBuilder.Append
(dtResult.Rows[Rows][0].ToString() rows for and 
columns char(20) values. append to delimiter create { ++} ;Rows>

处理回调

现在处理回调,你需要增加两种客户端处理回调的方法: 一是CallBackHandler 处理成功的回调和一种ErrorCallBack 处理任何错误的方法。 Listing 4显示了脚本的定义。 注意两种方法有相似的签名。

CallBackHandler 方法的result参数将从RaiseCallbackEvent方法那里返回限定的string列表, 并且context参数将适当的控制Id(Listing 2中,CallServer相同方法的第2 参数, 你传递country"Id"作为一个context参数) 注意如果(context == "cboCountry") ...使用context得到对合适的形式。所有残余处理返回价,使用split获得dropdown 目录的一个矩阵。

错误处理

在远程回调期间出现的错误通过CallBackManager发送回叫ErrorCallBack方法。Listing 1显示了ErrorCallBack的方法。ErrorCallBack 方法只包含在客户端的警告信息。你也可以包括更多的错误处理。Result参数提供错误信息。为了测试,可以从服务器边事件抛出一些异常, 然后检查其值。
可以运行这个例子来查看callback是如何工作的。如果你准备运行这个例子,解压缩文件到一个文件夹,建立虚拟目录。在运行之前一定要更新修改Web.config文件中connectionstring的值。

作者提示: 并非全部浏览器都支持回叫的实施。 可以使用HttpBrowserCapabilities类并检查两个新bool 属性的返回价值: SupportsCallbackSupportsXml Http 返回值为True表明浏览器支持callback

与远程脚本相比较,在ASP.NET v2.0里的回叫能力是一个更好的实施模型。 你可以实现回叫来返回数据查找,产生backend 事件,或者允许用户输入值。 使用XML 能使你的回叫更加强有力。 你能非常有效地使用对错误回叫的支持来验证用户输入。 最大的优点就是使用户与全页的postback/redraw 循环的分离。

C++的回调机制

什么是回调 开发中经常遇到等待其他模块事件通知的情况,例如: 用户点击UI上button的事件,通知给相关函数处理逻辑Model中数据改变的事件,通知给相关View模块刷新界面异步IO完成的事件...
  • wscdylzjy
  • wscdylzjy
  • 2016年05月16日 11:34
  • 2165

Java 消息机制之回调详解

Java 中的回调机制是一个比较常见的机制,只是有可能在你的程序中使用得比较少,在一些大型的框架中回调机制随处可见。而在之前的博文《Java设计模式——观察者模式》及 Android 中对 ListV...
  • u013761665
  • u013761665
  • 2016年04月24日 03:44
  • 4396

java回调机制及其实现

1.  什么是回调函数     回调函数(callback Function),顾名思义,用于回调的函数。  回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作...
  • xyls12345
  • xyls12345
  • 2014年05月21日 11:02
  • 8751

理解Java回调机制

其实对于回调机制,在实际使用中还是经常用到的。但好笑的是,一直没能对所谓的回调的概念有一个很清晰的理解。 最近抽空看一些书的时候,老是时不时的提到回调的概念。那好吧,正好抽空来简单总结总结,加深一下印...
  • ghost_Programmer
  • ghost_Programmer
  • 2015年03月03日 16:07
  • 2892

Java回调机制解析

Java回调机制解析 分类: J2SE2013-08-28 18:08 444人阅读 评论(4) 收藏 举报 模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调...
  • pi9nc
  • pi9nc
  • 2014年04月08日 10:49
  • 59011

弄明白Android 接口回调机制

以前对于这个机制理解不够深刻,现在重新整理下思路。 一、建模 我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的...
  • linfeng24
  • linfeng24
  • 2014年12月30日 13:15
  • 1370

关于回调技术的原理和作用

初次遇见回调函数 最开始接触回调方法是在Android中。从第一个Hello world程序开始,为了把xml文件中的控件显示到Activity中,我们必须把设置布局文件的代码写到一个叫Oncrea...
  • tiancai_lanyangyang
  • tiancai_lanyangyang
  • 2016年07月29日 22:33
  • 559

Java回调机制(以Android事件监听器为例)

Java的设计模式中有回调这个机制,在Android开发中我们也会经常用到回调机制。下面就通过一些小例子来说明什么是回调。   假如我们要实现这个这样一个功能。 MainActivity中由一个Fra...
  • u010712277
  • u010712277
  • 2016年02月25日 17:50
  • 1007

ICE回调机制。

使用分布式计算中间件ICE到现在已经有一年多了,在这一年里里面对ICE的理解、应用比较熟悉。    使用ICE写分布式软件,确实是很方便:ICE比较稳定、可靠,调用返回速度低延迟,使用简单,学习...
  • bestone0213
  • bestone0213
  • 2014年12月13日 12:36
  • 380

利用thrift实现一个非阻塞带有回调机制的客户端

客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果。但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自动的去处理。   比如举个形象点的...
  • YMR0717
  • YMR0717
  • 2016年07月14日 09:07
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Whidbey中客户端回调机制(三)
举报原因:
原因补充:

(最多只允许输入30个字)