使用文本框的值动态生成控件

Posted Insus.NET

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用文本框的值动态生成控件相关的知识,希望对你有一定的参考价值。

看到一个网友,有论坛上问及,动态的生成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控件即可。

看看做出来的效果:



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

 

以上是关于使用文本框的值动态生成控件的主要内容,如果未能解决你的问题,请参考以下文章

如何在后面的代码中获取使用 Raduploader 动态创建的文本框的值?

如何使用 JavaScript 或 JQuery 在 ASP.net 中获取生成控件的 ID

如何在 VBA 中获取对文本框控件的引用而不是文本框的值

jsp页面里 怎么让文本输入框的值 根据select所选的值而动态显示出相应的值

关于动态文本框的一般概念

在C#winform中删除运行时生成的控件