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
    }
}
posted on 2006-03-23 17:25  kuning的程序博客  阅读(226)  评论(0)    收藏  举报