自定义控件学习笔记(七)--偷偷带参数的提交
1。要点
1)偷偷带参数的提交的意思:用户提交数据的时候,并没有输入任何值,但是控件可以处理到一个隐含的信息
,从而分辨到底是哪个控件在提交数据
2)继承IPostBackEventHandler,而不是IPostBackDataHandler
3)IPostBackEventHandler只有一个方法要实现:RaisePostBackEvent
4)这个方法可以带一个参数
2。控件
usingSystem;
usingSystem.Web.UI;
namespaceTestCustomControl
...{
publicclassPostBackWithString:Control,IPostBackEventHandler
...{
stringtext="";
publiceventEventHandlerClick;
publicstringText
...{
get...{returntext;}
set...{text=value;}
}
publicvoidRaisePostBackEvent(stringeventArgument)
...{
if(Click!=null)
...{
Click(this,newEventArgs());
}
}
protectedoverridevoidRender(HtmlTextWriterwriter)
...{
writer.WriteBeginTag("a");
if(ID!=null)
writer.WriteAttribute("ID",ClientID);
writer.WriteAttribute("href","javascript:"+Page.ClientScript.GetPostBackEventReference(newPostBackOptions(this)));
writer.Write(HtmlTextWriter.TagRightChar);
if(Text.Length>0)
...{
writer.Write(Text);
}
writer.WriteEndTag("a");
}
}
}
3。用法
前台

<%...@PageLanguage="C#"AutoEventWireup="true"CodeFile="PostBackWithString.aspx.cs"Inherits="TestCustomControl_First_PostBackWithString"%>
<%...@RegisterAssembly="PostBackWithString"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:PostBackWithStringID="P1"runat="server"OnClick="P1_OnClick"Text="TestIt"/>
</div>
</form>
</body>
</html>
后台
protectedvoidP1_OnClick(objectsender,EventArgse)
...{
Response.Write("Out");
}
3100

被折叠的 条评论
为什么被折叠?



