精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>asp.net教程>正文

.Net组件开发介绍 开发ajax控件


来源:博客圆 时间:07-10-15 点击: 点击这里收藏本文

  从前面的基础知识是我们知道了它有GetCallbackResult()和void RaiseCallbackEvent(eventArgument)这两个方法。

  根据MSDN的文档,我们知道,在一个callback被post到服务端时, Page将会首先将post回来的form data绑定到当前页面的服务端web控件,接着判断本次post是callback还是postback,如果是postpost,那么自然是原来的那 个机制;

  如果是callback,则将回调用触发本次callback的控件的RaiseCallbackEvent (eventArgument),当然,eventArgument也将会正确的传过来,

  在这个函数的实现代码里我们可以对这个参数进行解析处理,并在某 个地方,存储我们准备返回的数据,或者待处理的已经被解析出来的参数。

  接着,系统将调用string GetCallbackResult(),在这个函数的实现代码中,我们可以直接返回我们在RaiseCallback函数中存储的准备返回的数据,或者 根据待处理的已经被解析出来的参数处理这些参数,并返回结果。这个返回的字符串,自然将以脚本的形式被render回客户端。

  3。分析示例代码:

  3.1我们先申明一个包含事件处理的派生类,因为我们要把AjaxText控件的Text属性写入其中,为什么要这样呢。其实,我们用的是异步回调中的自定义事件,如下下例中的TextChange事件,我想把this.控件ID.Text属性取出来,去对这个text的值去操作,发现text的值取不出来,后面就想到了把text的值写入到事件处理数据类中,也就是 这段代码。

 

  public class TextChangedEventArgs : EventArgs
   {
  
  
   public TextChangedEventArgs()
   {
   Text = "";
  
   }
  
   public TextChangedEventArgs(string _Text)
   {
   Text = _Text;
  
   }
   private string Text = "";
   public string TextValue
   {
   get { return Text; }
   }
   }

 

  3.2我们定义的一些属性。如Text(string),ReturnString(string),IsValid(bool),ClientCallBackScript(string)

  注意其中的两个属性:一个是IsValid,一个是ClientCallBackScript,那个IsValid是返回给客户端的值,又将它转成字符串给了ReturnString,因为下面这个方法中GetCallbackResult()

  要求返回字符串。

  IsValid的另一个重要作用在于,在客户端脚本中对于进行判定:例:

 

< script >
    
    
function  GetCallbackData(res)
    { 
if (res == " True " )
        {  
           document.getElementById(
" Label1 " ).innerHTML = " <font color=blue>成功</font> " ;
           document.getElementById(
" hi " ).value = " 1 " ;
        
        }
        
else
        { 
        document.getElementById(
" Label1 " ).innerHTML = " <font color=blue>该用户已存在</font> " ;
         document.getElementById(
" hi " ).value = " 0 " ;
            
        }
    }
    
</ script >

 

  那个ClientCallBackScript属性,非常重要,它是指向哪个js将被调用,并由GetCallbackEventReference去调用。

  如:

 

string callbackScript = Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);

 

  页面中

ajaxtext id="aj" p ...< clientcallbackscript="GetCallbackData" runat="server">

<txt:ajaxText runat=server ID=aj ClientCallBackScript=GetCallbackData ...

  指向正是上例中的function GetCallbackData(res)

  3.3 Render方法

  Render 方法将Web 控件发送到指定的HtmlTextWriter 实例。重写此方法以将自定义服务器控件发送到客户端

  这个方法在后述中会讲到。

  3.4 事件与委托。

  定义了TextChanged事件,TextChangedEventHandler委托

 

1 public event TextChangedEventHandler TextChanged
  2 {
  3 add
  4 {
  5
  6 Events.AddHandler(eventTextChanged, value);
  7 }
  8 remove
  9 {
  10
  11 Events.RemoveHandler(eventTextChanged, value);
  12 }
  13 }
  14
  15

 

  定义了一个TextChanged事件,而事件发生的时候只能用TextChangedHandler这个委托来做的。

  把委托都存放在了一个EventHandlerList中,因此此处你可以看到add与remove,

  这是访问器的声明,用于添加或移除客户代码中的事件处理程序,这样做的好处是公开大量的事件但不为每个事件分配字段,而是使用EventHandlerList存储这些事件例

  关于事件与委托,事件与委托详见这里:

  http://www.cnblogs.com/suiqirui19872005/archive/2007/10/12/922313.html

<txt:ajaxText runat=server ID=aj ClientCallBackScript=GetCallbackData ...

  指向正是上例中的function GetCallbackData(res)

  3.3 Render方法

  Render 方法将Web 控件发送到指定的HtmlTextWriter 实例。重写此方法以将自定义服务器控件发送到客户端

  这个方法在后述中会讲到。

  3.4 事件与委托。

  定义了TextChanged事件,TextChangedEventHandler委托

 

1 public event TextChangedEventHandler TextChanged
  2 {
  3 add
  4 {
  5
  6 Events.AddHandler(eventTextChanged, value);
  7 }
  8 remove
  9 {
  10
  11 Events.RemoveHandler(eventTextChanged, value);
  12 }
  13 }
  14
  15

 

  定义了一个TextChanged事件,而事件发生的时候只能用TextChangedHandler这个委托来做的。

  把委托都存放在了一个EventHandlerList中,因此此处你可以看到add与remove,

  这是访问器的声明,用于添加或移除客户代码中的事件处理程序,这样做的好处是公开大量的事件但不为每个事件分配字段,而是使用EventHandlerList存储这些事件例

  关于事件与委托,事件与委托详见这里:

  http://www.cnblogs.com/suiqirui19872005/archive/2007/10/12/922313.html

  3.5 定义一个方法:

 

protected virtual void OnTextChanged(object sender, TextChangedEventArgs e)
  {
  TextChangedEventHandler handler = Events[eventTextChanged] as TextChangedEventHandler;
  if (handler != null)
  {
  Text = e.TextValue;
  handler(this, e);
  }
  }

 

  当们重写这个方法时,将会激发TextChanged事件。并将事件处理类中的TextValue属性。附加上去。

9 7 3 1 2 3 4 5 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.