关于页面动态添加控件

 MSDN上提供了一种参考的方式,override页面的LoadViewState方法,因为该方法调用是在page_load事件之前,它可以保证这些动态控件在事件处理函数里面是可用的。下面是一个很简单的例子,例子很简单,页面上动态添加10个textbox,在viewstate里面保存一个标志位,表示是否动态添加了这些控件,在LoadViewState函数里进行判断,如果有这个标志,则重新加载这些控件。
 

public   bool  IsDynamicLoadControl
    
{
        
get
        
{
            
object dynamic = ViewState["IsDynamicLoadControl"];
            
return dynamic == null ? false : true;
        }

        
set
        
{
            ViewState[
"IsDynamicLoadControl"= value;
        }

    }

    
protected   override   void  LoadViewState( object  savedState)
    
{
        
base.LoadViewState(savedState);

        
if (IsDynamicLoadControl)
        
{
            LoadTextBox();
        }

    }


    
protected   void  Page_Load( object  sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            LoadTextBox();
        }

        
    }

    
private   void  LoadTextBox()
    
{
        
for (int i = 0; i < 10; i++)
        
{
            TextBox input 
= new TextBox();
            input.ID 
= "input" + i.ToString();
            
this.form1.Controls.Add(input);
        }

        IsDynamicLoadControl 
= true;
    }


最后可以进行测试一下:

TextBox tb  =   this .FindControl( " input0 " as  TextBox;
        ClientScript.RegisterStartupScript(
            
this .GetType(), 
            
""
            
string .Format( " " ,tb.Text));

你可能感兴趣的:(ASP.NET技术,input,textbox,测试)