在WEB自定义控件中实现事件及自动保存值

l妲己美终是妖

l妲己美终是妖

2016-01-29 13:04

在WEB自定义控件中实现事件及自动保存值,在WEB自定义控件中实现事件及自动保存值

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections.Specialized;
namespace MyWebControls
{
///
/// 创建一个派生于WEBCONTROL的类
/// 实现一个公有构造函数,它将调用基类构造函数来指定服务器控件应该输出一个input元素
/// 重写AddAttributesToRender方法,调用该方法是为了允许派生类为根元素input 添加属性
/// 我们将添加一个name属性,它的值由uniqueID特性派生,asp.net使用这个特性来存储每个控件的唯一ID。
///

[DefaultProperty("Text"),
ToolboxData("<{0}:MyTextBox runat=server>")]
public class MyTextBox : System.Web.UI.WebControls.WebControl,IPostBackDataHandler
{
public MyTextBox():base("input")
{
}
//使用ViewState对象将值保存起来,此对象的有效范围为当前页面都可以存取.最终保存在客户端。每次都会进行回送
//ViewState是StateBag类,可存放的数据类型有 int bool string 或数组 及其他的基本数据类型,及arraylist,hashtable,
//或具有类型转换器的类型,可以串行的类型
public string Text
{
get
{
if(ViewState["value"]==null)

{
return String.Empty;
}
return (string)ViewState["value"];
}
set
{
ViewState["value"]=value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender (writer);
writer.AddAttribute(HtmlTextWriterAttribute.Name,UniqueID);
writer.AddAttribute("type","text");
if(Text!=null)
writer.AddAttribute("value",Text);
}
#region IPostBackDataHandler 成员
//为了访问回送数据,服务器控件要实现IPostBackDataHandler接口,有二个方法
public void RaisePostDataChangedEvent()
{
//如果用户回送的数据发生改变则,发生事件
if(OnMyTextChnaged!=null)
{
OnMyTextChnaged(this,EventArgs.Empty);
}
}
//当有回送发生并且某个控件有回送数据时,此方法就会被调用,该方法为页面上所有需要访问回送数据的控件依次调用。
//此方法如果返回真,那么在为页面上所有其他带有回送数据的控件调用过LoadPostData方法后,RaisePostDataChangedMethod将被调用。
//如果返回假,则不调用.由于在此方法里引发事件会引起不可预知的结果,所以一定要在RaisePostDataChangedEvent里引发事件。
//
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
bool raiseEvent=false; //要不要触发事件的标志
//如果上一次的文本与回送的文本不一样
if(Text!=postCollection[postDataKey])
{
raiseEvent=true;
Text=postCollection[postDataKey];//将回送的值保存
}
return raiseEvent;
}
#endregion
//注册一个事件,文本改变事件
public event EventHandler OnMyTextChnaged; }}
展开更多 50%)
分享

猜你喜欢

在WEB自定义控件中实现事件及自动保存值

电脑网络
在WEB自定义控件中实现事件及自动保存值

如何在DataGrid控件中实现自定义分页

Web开发
如何在DataGrid控件中实现自定义分页

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC中自定义CRichEditCtrl控件

编程语言 网络编程
VC中自定义CRichEditCtrl控件

用FASTREPORT实现WEB应用中自定义报表

编程语言 网络编程
用FASTREPORT实现WEB应用中自定义报表

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

自定义 CRichEditCtrl 控件

C语言教程 C语言函数
自定义 CRichEditCtrl 控件

在Authorware中实现自定义标题栏

设计软件 平面设计软件 广告设计软件
在Authorware中实现自定义标题栏

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

一个用纯AS写的正态曲线画法

一个用纯AS写的正态曲线画法

flash action 详解(3)

flash action 详解(3)
下拉加载更多内容 ↓