你的位置:首页 > ASP.net教程

[ASP.net教程]使用文本框的值动态生成控件


看到一个网友,有论坛上问及,动态的生成checkbox控件,在文本框中输入一个“花”字,点一下“生成”按钮,就会在下面生成一个checkbox,它的text属性是“花”。再输入一个“鸟”,点一下按钮,就会生成第二个checkbox控件,text属性是“鸟”...

 


Insus.NET的解决方法很简单,就是每次在文本框输入的值都存起来,然后把这些数据绑定至一个CheckBoxList控件上就行了。

详细,先创建一个对象:

 

using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for Letter/// </summary>namespace Insus.NET{  public class Letter  {    private string _Name;    public string Name    {      get { return _Name; }      set { _Name = value; }    }    public Letter()    {          }    public Letter(string name)    {      this._Name = name;    }  }}

Source Code

 

创建一个实体,这个实体你可以把它开发成可以操作性,如添加,编辑,更新,删除或是获取数据集,等等...
在本例中,Insus.NET只实添加以及获取数据的两个方法:

 

using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for LetterEntity/// </summary>namespace Insus.NET{  public class LetterEntity  {    private List<Letter> _Letter = new List<Letter>();    public void Add(Letter l)    {      this._Letter.Add(l);    }    public IEnumerable<Letter> Letters    {      get {        return this._Letter;      }    }  }}

Source Code

 

万事俱备,只差ASPX的实现了,创建一个aspx的网页:

 

在ASPX.cs代码页中,你可以实现所需要的功能:

 

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Insus.NET;public partial class Default2 : System.Web.UI.Page{  LetterEntity le = new LetterEntity();  protected void Page_Load(object sender, EventArgs e)  {    if (!IsPostBack)    {      Data_Binding();    }    le = TemporaryLetters;  }  private void Data_Binding()  {    this.CheckBoxList1.DataSource = le.Letters;    this.CheckBoxList1.DataTextField = "Name";    this.CheckBoxList1.DataBind();  }  protected void Button1_Click(object sender, EventArgs e)  {    Letter l = new Letter();    if (!string.IsNullOrEmpty(this.TextBox1.Text.Trim()))      l.Name = this.TextBox1.Text.Trim();    le.Add(l);    TemporaryLetters = le;    Data_Binding();  }  public LetterEntity TemporaryLetters  {    get    {      if (Session["LetterEntity"] == null)        return new LetterEntity();      else        return (LetterEntity)Session["LetterEntity"];    }    set    {      Session["LetterEntity"] = value;    }  }}

Source Code


你也许觉得很复杂,因为涉入存储数据的问题。如果你把数据直接存入数据库的话,你可以在上面#6步中把填写的值存入数据库中,在#4步中,去读取数据库的数据绑定给CheckBoxList控件即可。

最后想说一句,好象没有什么怎样动态产生控件唉!!!