自定义控件学习笔记(五)
来源:互联网 发布:电视直播软件哪个清晰 编辑:程序博客网 时间:2024/06/10 05:30
自定义控件学习笔记(五)--比较客户提交数据和之前数据
1。要点
1)重写RaisePostDataChangedEvent方法
2)当LoadPostData返回true的时候触发RaisePostDataChangedEvent
3)在RaisePostDataChangedEvent里写当LoadPostData为true的时候,应该如何应对客户
2。控件
using System;
using System.Web.UI;
using System.Collections.Specialized;
namespace TestCustomControl
...{
public class CompareDataChange : Control, IPostBackDataHandler
...{
public string Text
...{
get
...{
if (ViewState["myText"] != null)
...{
string text = (string)ViewState["myText"];
return text;
}
else
...{
return "";
}
}
set ...{ ViewState["myText"] = value; }
}
public event EventHandler TextChanged;
protected override void Render(HtmlTextWriter writer)
...{
writer.WriteBeginTag("input");
writer.WriteAttribute("name", UniqueID);
if (ID != null)
...{
writer.WriteAttribute("id", ClientID);
}
if (Text.Length > 0)
...{
writer.WriteAttribute("value", Text);
}
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteEndTag("input");
}
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
...{
//先用户修改文字并回传后,text被修改(Render)之前引发此事件。
//流程:render-》显示-》用户修改-》LoadPostData-》(RaisePostDataChangedEvent)-》Render(第二次)
string temp = Text;
Text = postCollection[postDataKey];
if (temp != Text)
return true;//引发RaisePostDataChangedEvent
else
return false;
}
public void RaisePostDataChangedEvent()
...{
if (TextChanged != null)//指客户端使用控件时候,写入了 (OnTextChanged="MethodName"),否则则认为用户没有处理此事件
...{
TextChanged(this, new EventArgs());
}
}
}
}
3。用法
前台:
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="CompareDataChange.aspx.cs" Inherits="TestCustomControl_First_CompareDataChange" %>
<%...@ Register Assembly="CompareDataChange" TagPrefix="Surance" Namespace="TestCustomControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<Surance:CompareDataChange ID="C1" runat="server" Text="Type Something Differnt" OnTextChanged="C1_TextChanged" />
<asp:Button ID="Button1" runat="server" Text="Click" /></div>
</form>
</body>
</html>
后台:
protected void C1_TextChanged(object sender, EventArgs e)
...{
Response.Write("Text has chaged");
}
...{
Response.Write("Text has chaged");
}
- 自定义控件学习笔记(五)
- 开发asp.net自定义控件(asp.net学习笔记五)
- Android学习笔记(五):布局控件
- 学习笔记:自定义控件
- 自定义控件学习笔记(一)
- 自定义控件学习笔记(二)
- 自定义控件学习笔记(三)
- 自定义控件学习笔记(四)
- 自定义控件学习笔记(六)
- 自定义控件学习笔记(七)
- 自定义控件学习笔记(八)
- 自定义控件学习笔记(2-1)
- 自定义控件学习笔记(2-2)
- 自定义控件学习笔记(2-3)
- QT学习笔记(5):自定义控件
- android笔记【五】--图片、adapter、自定义控件
- 自定义控件学习笔记(五)Canvas 对绘制的辅助——范围裁切和几何变换
- android 自定义ListView下拉刷新控件——自定义控件学习(五)
- 自定义控件学习笔记(四)
- 时间
- C#调用GDI实现.NET中XOR、AND和OR模式的贴图
- 关于实施MVC框架结构的WEB项目的一些见解
- 2006年CSDN网友喜欢看什么?
- 自定义控件学习笔记(五)
- 章七 设计模式
- 最热网友收藏:共享一些面试题(2007年第1周)
- Java Web项目开发到底需要掌握哪些技术?
- 自定义控件学习笔记(六)
- 对学习计算机专业的人一些忠告
- 自定义控件学习笔记(七)
- 自定义控件学习笔记(八)
- 【八卦】Word之父即将遨游太空及其他