动态添加控件并获取其值

注意:
1.aspx页面<%Page%>里必须添加 EnableViewState="true",使动态添加的控件状态可保存
2.动态添加的控件最好 放在容器上(这里用Panel这个容器)
3.必须 设置动态控件的ID,否则获取不到该控件

建议:运用 Asp.net Ajax会有 更好的用户体验效果

例子:
test2.aspx:
<% @ Page Language = " C# "   AutoEventWireup = " true "  CodeFile = " Test2.aspx.cs "
Inherits
= " Test2 "  Title = " Untitled Page "  EnableViewState ="true"  %>
   
< asp:Panel ID = " Panel2 "  runat = " server "  Height = " 50px "  Width = " 446px " >
      
< asp:Label ID = " Label1 "  runat = " server "  Text = " Name1: " ></ asp:Label >
      
< asp:TextBox ID = " TextBox1 "  runat = " server " ></ asp:TextBox >
      
< asp:Label ID = " Label2 "  runat = " server "  Text = " Address1: " ></ asp:Label >
      
< asp:TextBox ID = " TextBox2 "  runat = " server "  Width = " 149px " ></ asp:TextBox >< br  />
   
</ asp:Panel >
   
< asp:Button ID = " btnAddAjax "  runat = " server "  Text = " Add "  OnClick = " btnAddAjax_Click "   />  
< asp:Button id = " btnShow "  onclick = " btnShow_Click "  runat = " server "  Text = " Show " />
< asp:Label id = " lblMsg "  runat = " server " > No Value </ asp:Label >



test2.aspx.cs

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   partial   class  Test2 : System.Web.UI.Page
{
   
protected void Page_Load(object sender, EventArgs e)
   
{
    
      
if(ViewState["txtName2"!= null && (bool)ViewState["txtName2"])
      
{
         CreateMyControls();
      }

      
     
   }


   
protected void btnAddAjax_Click(object sender, EventArgs e)
   
{
      CreateMyControls();
   }

   
protected void btnShow_Click(object sender, EventArgs e)
   
{
      
if(ViewState["txtName2"]!=null)
      
{
         TextBox txtName2 
= Panel2.FindControl("txtName2"as TextBox;
         
if(txtName2 != null)
         lblMsg.Text 
= "Name2= " + txtName2.Text;
      }


      
if(ViewState["txtAddr2"]!=null)
      
{
         TextBox txtAddr2 
= Panel2.FindControl("txtAddr2"as TextBox;
         
if(txtAddr2 != null)
            lblMsg.Text 
+= " Addr2= " + txtAddr2.Text;
      }


     
   }


   
private void CreateMyControls()
   
{
      Label lblName2 
= new Label();
      lblName2.Text 
= "Name2:";

      TextBox txtName2 
= new TextBox();
      
//设置ID,否则不能获取到值
      txtName2.ID = "txtName2";
      
//可视状态,否则PostBack后动态添加的控件会不见
      ViewState["txtName2"]= true;

      Label lblAddr2 
= new Label();
      lblAddr2.Text 
= "Addr2:";

      TextBox txtAddr2 
= new TextBox();
      txtAddr2.ID
= "txtAddr2";
      ViewState[
"txtAddr2"]= true;
 
       //添加自定义控件
      DateControl date2 = base.LoadControl("~/Controls/DateControl.ascx"as DateControl;
       date2.ID="date2";
       ViewState["date2"]= true;

      Panel2.Controls.Add(lblName2);
      Panel2.Controls.Add(txtName2);
      Panel2.Controls.Add(lblAddr2);
      Panel2.Controls.Add(txtAddr2);
       Panel2.Controls.Add(date2);
   }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值