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

来源:互联网 发布:电视直播软件哪个清晰 编辑:程序博客网 时间:2024/06/02 12:44

自定义控件学习笔记(三)--如何获取客户提交数据

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()
        
{
        }

    }

}

 

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);
    }