自定义控件学习笔记(三)--如何获取客户提交数据
1。要点
1)继承接口IPostBackDataHandler
2)重写LoadPostData
3)在LoadPostData中,通过postCollection[postDataKey]获取客户的提交
2。控件
using
System;
using System.Web.UI;
using System.Collections.Specialized;
namespace TestCustomControl
... {
public class DealPostBackData : Control,IPostBackDataHandler
...{
private string text="";
public string Text
...{
get ...{ return text; }
set ...{ text = value; }
}
protected override void Render(HtmlTextWriter writer)
...{
writer.WriteBeginTag("input");
writer.WriteAttribute("name", UniqueID);
if (ID != null)
...{
writer.WriteAttribute("id", ClientID);
}
if (text.Length > 0)
...{
writer.WriteAttribute("value", text);
}
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteEndTag("input");
}
public bool LoadPostData(string postDataKey,NameValueCollection postCollection)
...{
text=postCollection[postDataKey];
return false;
}
public void RaisePostDataChangedEvent()
...{
}
}
}
using System.Web.UI;
using System.Collections.Specialized;
namespace TestCustomControl
... {
public class DealPostBackData : Control,IPostBackDataHandler
...{
private string text="";
public string Text
...{
get ...{ return text; }
set ...{ text = value; }
}
protected override void Render(HtmlTextWriter writer)
...{
writer.WriteBeginTag("input");
writer.WriteAttribute("name", UniqueID);
if (ID != null)
...{
writer.WriteAttribute("id", ClientID);
}
if (text.Length > 0)
...{
writer.WriteAttribute("value", text);
}
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteEndTag("input");
}
public bool LoadPostData(string postDataKey,NameValueCollection postCollection)
...{
text=postCollection[postDataKey];
return false;
}
public void RaisePostDataChangedEvent()
...{
}
}
}
3。用法
前台
<% ... @ Page Language="C#" AutoEventWireup="true" CodeFile="DealPostBackData.aspx.cs" Inherits="TestCustomControl_First_DealPostBackData" %>
<% ... @ Register Assembly="DealPostBackData" TagPrefix="Surance" Namespace="TestCustomControl" %>
<! 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:DealPostBackData ID ="D1" runat ="server" Text ="Type Something" />
< asp:Button ID ="B1" Text ="Click" runat ="server" OnClick ="B1_Click" />
</ div >
</ form >
</ body >
</ html >
后台:
protected
void
B1_Click(
object
sender, EventArgs e)
... {
Response.Write(this.D1.Text);
}
... {
Response.Write(this.D1.Text);
}