动态添加控件(一)

我们在写程序的时候,有时候需要用到自动添加子控件的功能。例如和讯图片,在添加图片的时候,选择一张图片,就会自动添加一个图片的缩略图。但是,这只是类似与自动添加子控件,而不是真正的添加了子控件。他们只是把已经添加好的控件隐藏了,等需要显示的时候,再用javascript显示出来。这并不是本文的讨论范围了,本文主要是描述怎么自动的添加一个子控件。

    先在项目里添加一个ControlsAdd.aspx文件。在ControlsAdd.aspx文件里拖入一个Panel控件。

    进入ControlsAdd.aspx.cs文件,在Page_Load事件里加入以下代码:

CheckBoxList myList = new CheckBoxList();
myList.Items.Add(new ListItem("男","男"));
myList.Items.Add(new ListItem("女","女"));
this.Panel1.Controls.Add(myList);

    编译后可以看到在网页上,自动添加了一个CheckBoxList 控件。本文展示的是如何添加一个子控件,复杂的添加将在后面讲述。完整的代码如下:

ControlsAdd.aspx:

<%@ Page language="c#" Codebehind="ControlsAdd.aspx.cs" AutoEventWireup="false" Inherits="test.ControlsAdd" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

     <HEAD>

         <title>ControlsAdd</title>

         <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

         <meta name="CODE_LANGUAGE" Content="C#">

         <meta name="vs_defaultClientScript" content="JavaScript">

         <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

     </HEAD>

     <body>

         <form id="Form1" method="post" runat="server">

              <FONT face="宋体">

                   <asp:Panel id="Panel1" runat="server"></asp:Panel></FONT>

         </form>

     </body>

</HTML>

ControlsAdd.aspx.cs:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace test

{

     /// <summary>

     /// ControlsAdd 的摘要说明。

     /// </summary>

     public class ControlsAdd : System.Web.UI.Page

     {

         protected System.Web.UI.WebControls.Panel Panel1;    

         private void Page_Load(object sender, System.EventArgs e)

         {

              CheckBoxList myList = new CheckBoxList();

              myList.Items.Add(new ListItem("男","男"));

              myList.Items.Add(new ListItem("女","女"));

              this.Panel1.Controls.Add(myList);

         }

         #region Web 窗体设计器生成的代码

         override protected void OnInit(EventArgs e)

         {

              //

              // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

              //

              InitializeComponent();             

              base.OnInit(e);

         }        

         /// <summary>

         /// 设计器支持所需的方法 - 不要使用代码编辑器修改

         /// 此方法的内容。

         /// </summary>

         private void InitializeComponent()

         {   

              this.Load += new System.EventHandler(this.Page_Load); 

         }

         #endregion

     }

}

posted @ 2011-04-20 14:15  金威  阅读(439)  评论(0)    收藏  举报