自定义控件学习笔记(六)--生成回发
1。要点
1)生成回发的含义--不用用户点提交按钮,就自动提交表单
2)使用Page.ClientScript.GetPostBackEventReference(post)达到回发的目的
2。控件
usingSystem;
usingSystem.Web.UI;
usingSystem.Collections.Specialized;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
namespaceTestCustomControl
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
...{
publicclassGenerateAutoPostBack:Control,IPostBackDataHandler
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
boolautoPostBack=false;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
publicstringText
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
get
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
if(ViewState["myText"]!=null)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
stringtext=(string)ViewState["myText"];
returntext;
}
else
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
return"";
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
set...{ViewState["myText"]=value;}
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
publicboolAutoPostBack
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
get...{returnautoPostBack;}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
set...{autoPostBack=value;}
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
publiceventEventHandlerTextChanged;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
protectedoverridevoidRender(HtmlTextWriterwriter)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
writer.WriteBeginTag("input");
writer.WriteAttribute("name",UniqueID);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if(ID!=null)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
writer.WriteAttribute("id",ClientID);
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if(Text.Length>0)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
writer.WriteAttribute("value",Text);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if(autoPostBack)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
//writer.WriteAttribute("onchange","javascript:"+Page.GetPostBackEventReference(this));
PostBackOptionspost=newPostBackOptions(this);
writer.WriteAttribute("onchange","javascript:"+Page.ClientScript.GetPostBackEventReference(post));
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
writer.Write(HtmlTextWriter.TagRightChar);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
writer.WriteEndTag("input");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
publicboolLoadPostData(stringpostDataKey,NameValueCollectionpostCollection)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//先用户修改文字并回传后,text被修改(Render)之前引发此事件。
//流程:render-》显示-》用户修改-》LoadPostData-》(RaisePostDataChangedEvent)-》Render(第二次)
stringtemp=Text;
Text=postCollection[postDataKey];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if(temp!=Text)
returntrue;//引发RaisePostDataChangedEvent
else
returnfalse;
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
publicvoidRaisePostDataChangedEvent()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
if(TextChanged!=null)//指客户端使用控件时候,写入了(OnTextChanged="MethodName"),否则则认为用户没有处理此事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
TextChanged(this,newEventArgs());
}
}
}
}
3。用法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
<%...@PageLanguage="C#"AutoEventWireup="true"CodeFile="GeneratePostBack.aspx.cs"Inherits="TestCustomControl_First_GeneratePostBack"%>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
<%...@RegisterAssembly="GenerateAutoPostBack"Namespace="TestCustomControl"TagPrefix="Surance"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<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)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
...{
Response.Write("Generate");
}
分享到:
相关推荐
我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~): 大家看到这个觉得这不是很简单的吗,这不就是写个布局文件就搞定嘛,没错,确实直接上布局就行,不过,我只是用这个...
在本篇学习笔记中,我们将探讨如何基于Clingingboy的《asp.net控件开发基础》来创建一个简单的自定义控件——myGrid。 首先,自定义控件的创建通常涉及继承已有的ASP.NET内置控件,或者直接继承`System.Web.UI....
通过研究这些资料,你可以深入了解自定义控件的创建流程,学习如何处理图形绘制、触摸事件和属性动画,以及如何优化自定义控件的性能和可维护性。这将极大地提升你在Android开发领域的专业能力。
除了内置的控件,开发者还可以创建自定义控件以满足特定需求。自定义控件可以组合现有控件,添加新的属性和方法,甚至生成自定义的HTML输出。 八、控件的生命周期 理解控件的生命周期对有效编程至关重要。从初始化...
本篇文章将深入探讨如何实现“Android高仿QQ5.0侧滑菜单效果”,这一特性是通过自定义控件来达成的,旨在帮助开发者们提升应用的交互性和美观度。 首先,我们需要理解QQ5.0的侧滑菜单设计。这个设计允许用户从屏幕...
VS2005.net控件学习笔记是一份针对初学者的详细教程,旨在帮助那些刚开始接触Visual Studio 2005 .NET开发环境的人更好地理解和使用控件。这些控件是构建用户界面的基础元素,对于任何.NET应用程序的开发都是至关...
在Android开发中,自定义控件是一种常见的需求,它能帮助开发者实现更丰富的交互和视觉效果。本篇笔记主要关注的是如何创建一个自定义的开关按钮,这个过程涉及到对View的继承、自定义属性的设置以及图形绘制。 ...
动画(animation,animator)###自定义控件(Ondraw,OnMesure,Onlayout)-以及实战(最后策划)[Ps莫在意向代码习惯是否好坏,因为时间有限,主要是分享...自定义控件,学习记录演示这里涵盖了笔记,实例跟着启舰学习
本篇学习笔记将深入探讨如何自定义ProgressBar的样式。 首先,我们了解下ProgressBar的基本类型。Android提供了几种内置的样式,如Horizontal(水平)、Circular(圆形)和Indeterminate(不确定进度)。Horizontal...
这篇学习笔记将深入探讨如何在iOS应用中实现自定义导航栏以及如何有效利用表格展示数据。 首先,自定义导航栏允许开发者根据应用程序的品牌风格或功能需求进行个性化设计。在iOS中,我们通常使用...
在本文中,我们将深入探讨如何使用Sencha Touch框架自定义目录结构来创建你的第一个应用程序。Sencha Touch是一款强大的JavaScript框架,专为构建移动Web应用程序而设计。它提供了丰富的UI组件和数据管理工具,使得...
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
这份“安卓学习笔记”旨在帮助我们全面了解Android开发的核心概念,特别是在自定义控件和XML方面的应用。 首先,Android是一个开源的移动操作系统,它基于Linux内核,提供了丰富的API供开发者构建应用程序。Android...
本资源是笔者学习过程中的笔记,目前包含了WPF中基本控件用法、数据绑定 、WPF动画效果、样式、模板定义、自定义控件、附加行为、多线程、串口模拟编写思路、导航页面、拖动效果、查看控件的默认模板,在集合中如果...
ComboBox控件可以输入文本...该自定义控件利用visual studio2017开发,使用VB.NET语言对TextBox和ComboBox进行了改写,实现类百度搜索框似的输入文本智能模糊提示说明、自动匹配过滤功能。具体效果请参阅本人相关博文。
【C++语法学习笔记】 C++是一门强大的编程语言,其语法丰富且严谨。这篇学习笔记主要涵盖了C++的基础知识,包括函数定义、头文件、注释、名称空间、常量、变量、进制转换、基本类型以及常用函数的使用。 1. **函数...
在《Android群英传》的读书笔记中,可能还涵盖了如何测试自定义View,如何优化性能,以及如何在项目中合理使用自定义控件避免过度设计等话题。TopBarTest这个文件名可能代表了一个具体的复合控件示例,它可能是书中...