自定义控件学习笔记(六)--生成回发
1。要点
1)生成回发的含义--不用用户点提交按钮,就自动提交表单
2)使用Page.ClientScript.GetPostBackEventReference(post)达到回发的目的
2。控件
usingSystem;
usingSystem.Web.UI;
usingSystem.Collections.Specialized;
namespaceTestCustomControl
...{
publicclassGenerateAutoPostBack:Control,IPostBackDataHandler
...{
boolautoPostBack=false;
publicstringText
...{
get
...{
if(ViewState["myText"]!=null)
...{
stringtext=(string)ViewState["myText"];
returntext;
}
else
...{
return"";
}
}
set...{ViewState["myText"]=value;}
}
publicboolAutoPostBack
...{
get...{returnautoPostBack;}
set...{autoPostBack=value;}
}
publiceventEventHandlerTextChanged;
protectedoverridevoidRender(HtmlTextWriterwriter)
...{
writer.WriteBeginTag("input");
writer.WriteAttribute("name",UniqueID);
if(ID!=null)
...{
writer.WriteAttribute("id",ClientID);
}
if(Text.Length>0)
...{
writer.WriteAttribute("value",Text);
}
if(autoPostBack)
...{
//writer.WriteAttribute("onchange","javascript:"+Page.GetPostBackEventReference(this));
PostBackOptionspost=newPostBackOptions(this);
writer.WriteAttribute("onchange","javascript:"+Page.ClientScript.GetPostBackEventReference(post));
}
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteEndTag("input");
}
publicboolLoadPostData(stringpostDataKey,NameValueCollectionpostCollection)
...{
//先用户修改文字并回传后,text被修改(Render)之前引发此事件。
//流程:render-》显示-》用户修改-》LoadPostData-》(RaisePostDataChangedEvent)-》Render(第二次)
stringtemp=Text;
Text=postCollection[postDataKey];
if(temp!=Text)
returntrue;//引发RaisePostDataChangedEvent
else
returnfalse;
}
publicvoidRaisePostDataChangedEvent()
...{
if(TextChanged!=null)//指客户端使用控件时候,写入了(OnTextChanged="MethodName"),否则则认为用户没有处理此事件
...{
TextChanged(this,newEventArgs());
}
}
}
}
3。用法
<%...@PageLanguage="C#"AutoEventWireup="true"CodeFile="GeneratePostBack.aspx.cs"Inherits="TestCustomControl_First_GeneratePostBack"%>
<%...@RegisterAssembly="GenerateAutoPostBack"Namespace="TestCustomControl"TagPrefix="Surance"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>无标题页</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<Surance:GenerateAutoPostBackID="G1"Runat="server"AutoPostBack="true"OnTextChanged="G1_OnTextChanged"/>
</div>
</form>
</body>
</html>
后台
protectedvoidG1_OnTextChanged(objectsender,EventArgse)
...{
Response.Write("Generate");
}
分享到:
相关推荐
nokia-自定义控件,Symbian学习笔记,SymbianER-时间条控件制作简明教程,创建自定义控件中文
主要为大家分享了Android自定义控件之组合控件学习笔记,具有一定的实用性和参考价值,感兴趣的小伙伴们可以参考一下
最近看了下Clingingboy写的《asp.net控件开发基础》,做些笔记。
Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭【学习鸿洋_视频博客笔记总结】
动画(animation,animator)###自定义控件(Ondraw,OnMesure,Onlayout)-以及实战(最后策划)[Ps莫在意向代码习惯是否好坏,因为时间有限,主要是分享...自定义控件,学习记录演示这里涵盖了笔记,实例跟着启舰学习
主要为大家分享了Android自定义开关按钮的学习笔记,内容丰富,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本资源是笔者学习过程中的笔记,目前包含了WPF中基本控件用法、数据绑定 、WPF动画效果、样式、模板定义、自定义控件、附加行为、多线程、串口模拟编写思路、导航页面、拖动效果、查看控件的默认模板,在集合中如果...
C++语法的学习笔记,随学习进度更新,目前到(六十一)。 书籍为PDF版的:C++ Primer Plus 第6版 中文版(971页) 学习进度为:第四章4.10.3(比较数组、vector对象和array对象) 尚未学习到4.11(总结) 顺便...
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
NULL 博文链接:https://yuemeiqing2008-163-com.iteye.com/blog/1943479
安卓笔记 深入学习 自定义控件 xml 比较深入的学习笔记
Qt学习笔记:自定义窗体的移动+控件图标-附件资源
Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数SharedPreferences) Android学习笔记(八)——数据存储(SD卡文件操作) Android学习笔记(九)——...
bootstrap-switch插件是一个针对Bootstrap实现的开关(switch)按钮控件,可以支持尺寸、颜色等属性的自定义。开关式按钮在国内网站上使用的并不是很多,Bootstrap 的应用在国外非常流行,不知道是我们不喜欢还是...
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share