自定义控件学习笔记(七)--偷偷带参数的提交
1。要点
1)偷偷带参数的提交的意思:用户提交数据的时候,并没有输入任何值,但是控件可以处理到一个隐含的信息
,从而分辨到底是哪个控件在提交数据
2)继承IPostBackEventHandler,而不是IPostBackDataHandler
3)IPostBackEventHandler只有一个方法要实现:RaisePostBackEvent
4)这个方法可以带一个参数
2。控件
using
System;
using System.Web.UI;
namespace TestCustomControl
... {
public class PostBackWithString:Control,IPostBackEventHandler
...{
string text="";
public event EventHandler Click;
public string Text
...{
get...{return text;}
set...{text=value;}
}
public void RaisePostBackEvent(string eventArgument)
...{
if(Click!=null)
...{
Click(this,new EventArgs());
}
}
protected override void Render(HtmlTextWriter writer)
...{
writer.WriteBeginTag("a");
if(ID!=null)
writer.WriteAttribute("ID",ClientID);
writer.WriteAttribute("href","javascript:"+Page.ClientScript.GetPostBackEventReference(new PostBackOptions(this)));
writer.Write(HtmlTextWriter.TagRightChar);
if(Text.Length>0)
...{
writer.Write(Text);
}
writer.WriteEndTag("a");
}
}
}
using System.Web.UI;
namespace TestCustomControl
... {
public class PostBackWithString:Control,IPostBackEventHandler
...{
string text="";
public event EventHandler Click;
public string Text
...{
get...{return text;}
set...{text=value;}
}
public void RaisePostBackEvent(string eventArgument)
...{
if(Click!=null)
...{
Click(this,new EventArgs());
}
}
protected override void Render(HtmlTextWriter writer)
...{
writer.WriteBeginTag("a");
if(ID!=null)
writer.WriteAttribute("ID",ClientID);
writer.WriteAttribute("href","javascript:"+Page.ClientScript.GetPostBackEventReference(new PostBackOptions(this)));
writer.Write(HtmlTextWriter.TagRightChar);
if(Text.Length>0)
...{
writer.Write(Text);
}
writer.WriteEndTag("a");
}
}
}
3。用法
前台
<% ... @ Page Language="C#" AutoEventWireup="true" CodeFile="PostBackWithString.aspx.cs" Inherits="TestCustomControl_First_PostBackWithString" %>
<% ... @ Register Assembly="PostBackWithString" Namespace="TestCustomControl" TagPrefix="Surance" %>
<! 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:PostBackWithString ID ="P1" runat ="server" OnClick ="P1_OnClick" Text ="Test It" />
</ div >
</ form >
</ body >
</ html >
后台
protected void P1_OnClick( object sender, EventArgs e)
... {
Response.Write("Out");
}