`
txf2004
  • 浏览: 6875143 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义控件学习笔记(七)

阅读更多

自定义控件学习笔记(七)--偷偷带参数的提交

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");
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics