首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > ASP.net教程 > Asp.Net开发技巧 > 正文
Google
介绍.Net组件开发ajax控件
来源:博客园 2007年10月16日 09:14 网友评论:0条 点击:

  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属性。附加上去。

  3.6 实现ICallbackEventHandler接口

  接口的两个方法。

public void RaiseCallbackEvent(string eventArgument)
  {
  TextChangedEventArgs args = new TextChangedEventArgs(eventArgument);
  OnTextChanged(this, args);
  }
  public string GetCallbackResult()
  {
  return ReturnString;
  }

  3.7静态构造器

  static ajaxText()
   {
   eventTextChanged = new object();
   }

  一个给定的类(或结构)只能定义一个static构造器,无论生成多少个实例,一个类的static构造器只执行一次,不能为static构造器指定访问修饰符,不能带有任何参数

  static构造器在程序员创建第一个实例的时候,在头一次访问static成员之前被调用,static构造器在所有实例级别的构造器之前执行。

  4。控件代码:

 完整的控件代码
  1using System;
  2using System.Data;
  3using System.Configuration;
  4using System.Web;
  5using System.Web.Security;
  6using System.Web.UI;
  7using System.Web.UI.WebControls;
  8using System.Web.UI.WebControls.WebParts;
  9using System.Web.UI.HtmlControls;
  10using System.ComponentModel;
  11using System.Collections.Specialized;
  12/**//// 
  13/// ajaxText 的摘要说明
  14/// 
  15///
  16namespace cnblogs.suiqirui
  17{
  18 public class TextChangedEventArgs : EventArgs
  19 {
  20
  21
  22 public TextChangedEventArgs()
  23 {
  24 Text = "";
  25
  26 }
  27
  28 public TextChangedEventArgs(string _Text)
  29 {
  30 Text = _Text;
  31
  32 }
  33 private string Text = "";
  34 public string TextValue
  35 {
  36 get { return Text; }
  37 }
  38 }
  39 [DefaultEvent("TextChanged")]
  40 [ToolboxData("<{0}:ajaxtext runat=server>")]
  41 public class ajaxText : WebControl, ICallbackEventHandler
  42 {
  43
  44 private string returnstring;
  45 public delegate void TextChangedEventHandler(object sender, TextChangedEventArgs e);//申明一个委托。
  46 private static readonly object eventTextChanged;
  47
  48 public event TextChangedEventHandler TextChanged
  49 {
  50 add
  51 {
  52
  53 Events.AddHandler(eventTextChanged, value);
  54 }
  55 remove
  56 {
  57
  58 Events.RemoveHandler(eventTextChanged, value);
  59 }
  60 }
  61
  62 static ajaxText()
  63 {
  64 eventTextChanged = new object();
  65 }
  66 属性列表#region 属性列表
  67 [Description("得到或者设置一个text值")]
  68
  69 public string Text
  70 {
  71 get
  72 {
  73
  74 object o = ViewState["Text"];
  75 return o == null ? "" : (string)o;
  76 }
  77 set
  78 {
  79
  80 ViewState["Text"] = value;
  81 }
  82
  83
  84 }
  85
  86 private string ReturnString
  87 {
  88 get
  89 {
  90 return (string)ViewState["ReturnString"];
  91
  92 }
  93 set
  94 {
  95
  96 ViewState["ReturnString"] = value;
  97 }
  98
  99
  100 }
  101 public bool IsValid
  102 {
  103
  104 get
  105 {
  106
  107 object o = ViewState["IsValid"];
  108 return o == null ? false : (bool)o;
  109 }
  110 set
  111 {
  112
  113 ViewState["IsValid"] = value;
  114
  115 }
  116 }
  117
  118 [Description("设置或获取客户端脚本名字")]
  119 public string ClientCallBackScript
  120 {
  121
  122 get
  123 {
  124
  125 object o = ViewState["ClientCallBackScript"];
  126 return o == null ? "null" : o.ToString();
  127 }
  128 set
  129 {
  130
  131 ViewState["ClientCallBackScript"] = value;
  132 }
  133 }
  134
  135
  136 #endregion
  137
  138
  139
  140 public string GetCallbackResult()
  141 {
  142
  143 return ReturnString;
  144 }
  145 protected override void Render(HtmlTextWriter writer)
  146 {
  147 if (base.Page == null)
  148 {
  149 base.Page.VerifyRenderingInServerForm(this);
  150 }
  151 string callbackScript = Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);
  152
  153 // writer.WriteBeginTag("input");
  154
  155 writer.AddAttribute("onblur", callbackScript);
  156 writer.Write(" 
  157 writer.Write("\" value=\"" + this.Text + "\" />");
  158 base.Render(writer);
  159
  160
  161 }
  162
  163 public void RaiseCallbackEvent(string eventArgument)
  164 {
  165
  166
  167 TextChangedEventArgs args = new TextChangedEventArgs(eventArgument);
  168
  169
  170 OnTextChanged(this, args);
  171 ReturnString = Convert.ToString(IsValid);
  172
  173
  174
  175
  176 }
  177
  178 protected virtual void OnTextChanged(object sender, TextChangedEventArgs e)
  179 {
  180 TextChangedEventHandler handler = Events[eventTextChanged] as TextChangedEventHandler;
  181 if (handler != null)
  182 {
  183 Text = e.TextValue;
  184 handler(this, e);
  185
  186 }
  187 }
  188 public ajaxText()
  189 {
  190 //
  191 // TODO: 在此处添加构造函数逻辑
  192 //
  193 }
  194 }
  195}
  196
  197
首页 上一页 [1] [2] [3] [4] 下一页 尾页
上一篇:用C#开发.NET CF 蓝牙通信模块   下一篇:实现支付宝Payto接口的C#.net方法
收藏此页】【打印】【关闭
 相关文章  我要点评
·.Net(C#)关于变量的命名和属性
·通过ASP.NET编程进行远程杀死进程
·ASP.NET的应用程序域须知
·自由修改组件动画效果
·Ajax 的六个误区
·介绍Sandcastle 生成.NET API文档的工具
·ASP.NET最常见错误提示
·不用组件实现Ajax效果

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】