zoukankan      html  css  js  c++  java
  • 使用文本框的值动态生成控件

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

    看看做出来的效果:



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

  • 相关阅读:
    在vue项目中使用BetterScroll插件(2)-点击导航条定位
    在vue项目中使用BetterScroll插件(1)-滚动列表
    在vue项目中使用代理转发机制实现本地数据测试
    spring event的事件驱动模型的最佳实践@EventListene
    面向切面编程AOP的最佳入门示例
    使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型
    springboot下使用拦截器和过滤器
    微服务注册与发现eureka
    微服务相关概念
    Docker基础知识
  • 原文地址:https://www.cnblogs.com/insus/p/5504000.html
Copyright © 2011-2022 走看看