自定义复合控件[3]获取客户信息

using  System;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.ComponentModel;

namespace  csMathControl
{
    
///   <summary>
    
///  从客户端获取数据
    
///   </summary>
    [DefaultProperty( " Text " ), 
        ToolboxData(
" <{0}:RenderPostBackText runat=server></{0}:RenderPostBackText> " )]
    [DefaultEvent(
" Change " )]
    
public   class  RenderPostBackText : System.Web.UI.WebControls.WebControl,IPostBackDataHandler
    {    
        [Bindable(
true ), 
            Category(
" Appearance " ), 
            DefaultValue(
"" )] 
        
public   string  Text 
        {
            
get
            {
                
if (ViewState[ " text " ] != null )
                
return  ViewState[ " text " ].ToString();
                
else
                    
return   null ;
            }

            
set
            {
                ViewState[
" text " ] = value;
                
            }
        }
        
///   <summary>  
        
///  将此控件呈现给指定的输出参数。
        
///   </summary>
        
///   <param name="output">  要写出到的 HTML 编写器  </param>
         protected   override   void  Render(HtmlTextWriter output)
        {
            
// output.Write(Text);
            output.AddAttribute( " value " , this .Text );
            output.AddAttribute(
" name " , this .UniqueID); // [2]必须将这个属性定义成允许使用回递数据
            output.RenderBeginTag( " INPUT " );
            output.RenderEndTag();
        }
        
public   event  EventHandler Change;
        
protected   virtual   void  OnChange(EventArgs e)
        {
            
if (Change != null )
                Change(
this ,e);
        }
        
#region  IPostBackDataHandler 成员

        
public   void  RaisePostDataChangedEvent()
        {
            
//  TODO:  添加 RenderPostBackText.RaisePostDataChangedEvent 实现
            OnChange(EventArgs.Empty);
        }

        
public   bool  LoadPostData( string  postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
        {
            
//  TODO:  添加 RenderPostBackText.LoadPostData 实现
            
// return false;
            
// 如果用户该便了文本就更新文本属性
             if ( this .Text != postCollection[postDataKey])
            {
                
this .Text = postCollection[postDataKey];
                
// 返回true就会调用上面的RaisePostDataChangeEvent
                 return   true ;

            }
            
else
                
return   false ;
        }

        
#endregion
    }
}

你可能感兴趣的:(自定义)