asp.net组件(7)数据回发 IPostBackDataHandler
2007-12-19 20:01
453 查看
先来做个实验:
新建一网页.拉入一个TextBox控件.双击它.则系统默认为其添加TextChanged事件的处理函数
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
Response.Write("<script language='javascript'>alert('" + TextBox1.Text + "');</script>");
}
接着又拉入一个Button控件
运行程序,在textbox中输入任意字符串,点击,button触使页面回发.
弹出:输入的内容
在textbox中输入与刚才相同的字符串,点击,button触使页面回发.
不弹出任何东西
textbox是怎么做到获取字符串的改变呢?
查看sdk
public class TextBox : WebControl, IPostBackDataHandler
就是IPostBackDataHandler提供了这个魔力.
接下来干什么呢?当然是我们自己也做一个喽.来试试这个强大的功能.
using System;
using System.Collections.Specialized;
using System.Web.UI;
namespace WebComponent
我们来分析下这个控件.
首先是Text这个属性:我们要模拟textbox控件的效果,所以也提供了一个text属性,
但就有个问题,如果在页面回发中保留输入字符串的值呢?
使用:ViewState["Text"]来保留住状态.返回类型是object所以需要对其强制转换.
还有一点说明一下:IPostBackDataHandler没有回发的功能,所以我们需要在页面中加个Button来回发.
页面回发后,页框架在发送的内容中搜索与实现 IPostBackDataHandler 的服务器控件的 UniqueID 匹配的值。
然后,页框架按顺序在每个实现该接口的控件上调用 LoadPostData。
那么LoadPostData有什么作用呢?主要作用是可以获取回发回来的数据.
string postedData = postCollection[postDataKey];//回发回来的字符串
postDataKey标识控件的关键字
postCollection发送数据的集合
LoadPostData的返回值为bool型.
return true则,将调用.RaisePostDataChangedEvent产生回发数据发生变化的事件
return false,当然就不产生喽.
所以LoadPostData中提供了回发的数据,就是让你比较,数据是否改变了.
说到这里就完了.
你可以试试拉两个DropDownList控件
一个的AutoPostBack为true ddlAutoPostBack
另一个的AutoPostBack为false ddlNotAutoPostBack
这个属性就是控件是否自动回发.也就是是否实现IPostBackEventHandler这个接口
DropDownList中有个SelectedIndexChanged事件
用来判断选中项是否改变,说明它实现了IPostBackDataHandler这个接口
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Ch07 : System.Web.UI.Page
ddlNotAutoPostBack_SelectedIndexChanged永远也不会被执行.
因为ddlNotAutoPostBack的AutoPostBack为false
新建一网页.拉入一个TextBox控件.双击它.则系统默认为其添加TextChanged事件的处理函数
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
Response.Write("<script language='javascript'>alert('" + TextBox1.Text + "');</script>");
}
接着又拉入一个Button控件
运行程序,在textbox中输入任意字符串,点击,button触使页面回发.
弹出:输入的内容
在textbox中输入与刚才相同的字符串,点击,button触使页面回发.
不弹出任何东西
textbox是怎么做到获取字符串的改变呢?
查看sdk
public class TextBox : WebControl, IPostBackDataHandler
就是IPostBackDataHandler提供了这个魔力.
接下来干什么呢?当然是我们自己也做一个喽.来试试这个强大的功能.
using System;
using System.Collections.Specialized;
using System.Web.UI;
namespace WebComponent
我们来分析下这个控件.
首先是Text这个属性:我们要模拟textbox控件的效果,所以也提供了一个text属性,
但就有个问题,如果在页面回发中保留输入字符串的值呢?
使用:ViewState["Text"]来保留住状态.返回类型是object所以需要对其强制转换.
还有一点说明一下:IPostBackDataHandler没有回发的功能,所以我们需要在页面中加个Button来回发.
页面回发后,页框架在发送的内容中搜索与实现 IPostBackDataHandler 的服务器控件的 UniqueID 匹配的值。
然后,页框架按顺序在每个实现该接口的控件上调用 LoadPostData。
那么LoadPostData有什么作用呢?主要作用是可以获取回发回来的数据.
string postedData = postCollection[postDataKey];//回发回来的字符串
postDataKey标识控件的关键字
postCollection发送数据的集合
LoadPostData的返回值为bool型.
return true则,将调用.RaisePostDataChangedEvent产生回发数据发生变化的事件
return false,当然就不产生喽.
所以LoadPostData中提供了回发的数据,就是让你比较,数据是否改变了.
说到这里就完了.
你可以试试拉两个DropDownList控件
一个的AutoPostBack为true ddlAutoPostBack
另一个的AutoPostBack为false ddlNotAutoPostBack
这个属性就是控件是否自动回发.也就是是否实现IPostBackEventHandler这个接口
DropDownList中有个SelectedIndexChanged事件
用来判断选中项是否改变,说明它实现了IPostBackDataHandler这个接口
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Ch07 : System.Web.UI.Page
ddlNotAutoPostBack_SelectedIndexChanged永远也不会被执行.
因为ddlNotAutoPostBack的AutoPostBack为false
相关文章推荐
- 服务器控件数据回发实现IPostBackDataHandler需注意的
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(5)事件和数据回发机制】★★★
- 组件开发之IPostBackDataHandler和OnLoad
- page在处理post请求时需要处理数据的加载IPostBackDataHandler和事件的触发IPostBackEventHandler.
- web组件设计,利用接口(IPostBackDataHandler)产生数据回传的问题
- web组件设计,利用接口(IPostBackDataHandler)产生数据回传的问题
- 自定义控件(10)数据回传IPostBackDataHandler
- ASP.NET中使用开源组件NPOI快速导入导出Execl数据
- ASP.NET框架 数据回发与事件回发
- asp.net导出数据到execl并保存到本地 不需要调用Office组件
- asp.net自定义控件回发数据实现
- asp.net mvc源码分析-Controllerl篇 TempData数据存储
- asp.net导出数据到execl并保存到本地 不需要调用Office组件
- ASP.NET数据格式的Format-- DataFormatString
- asp.net 通过 Handler 导出数据至excel (让用户下载)
- asp.net--数据访问组件模型
- Web Control 开发系列(二) 深入解析Page的PostBack过程和IPostBackDataHandler
- [Joe 原创] Web Control 开发系列(二) 深入解析Page的PostBack过程和IPostBackDataHandler
- ASP.NET dropdownlist绑定数据却显示System.Data.DataRowView
- ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)