欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ASP.NET动态控件生成

程序员文章站 2023-12-28 10:48:16
...

实例——输入文本,增加带有此文本的复选框

aspx生命周期:先执行PageLoad方法,然后才按照页面控件排布顺序,依次执行所请求的事件。
每一次浏览器提交表单/重新加载界面时,服务器接受浏览器之前的控件数据,并结合服务器站点中的此界面的原始界面一起编译,得到一个新界面,再返回给浏览器。
所以,若仅仅由页面控件事件去生成动态控件,由于重新加载的时候,这些动态控件不能作为控件信息保留(不存在与原始界面的控件)。所以,下次点击页面控件去生成动态控件时,也只有刚刚生成的动态控件。
1、PageLoad方法
最终效果
ASP.NET动态控件生成
.aspx.cs代码如下:

protected void Page_Load(object sender, EventArgs e)
        {
        //从暂存服务器控件把之前全部输入记录提取,并新建复选框
        //可以避免一重新加载界面,就全部消失
            if (TextBox2.Text != "")
            {
                string[] a = TextBox2.Text.Split('\u0081');
                for (int i = 0; i < a.Length; i++)
                {
                    if (a[i] != "")
                    {
                        CheckBox b;
                        b = new CheckBox();
                        b.Text = a[i];
                        Panel1.Controls.Add(b);
                    }
                }
            }
            //按照文本新建,也可以把这个放在按钮事件中
            //这里把按钮放空,只用来刷新界面。
            if (TextBox1.Text != "")
            {
                CheckBox b;
                b = new CheckBox();
                b.Text = TextBox1.Text;
                Panel1.Controls.Add(b);
                TextBox2.Text += TextBox1.Text;
                TextBox2.Text += '\u0081';
                TextBox1.Text = "";
            }
        }

2、编程关键
关键在于认识到服务器控件可以保留上次表单的值,至于原因后续才讲。
编程思路:
从暂存服务器控件取值——》按照值添加新项——》从文本框读取值——》新添项并把值记录在暂存服务器控件中,以便下次使用。
经过上述过程,即使每次页面重新加载,都能保留操作结果,因为每次操作的记录都记载在一个暂存服务器控件中了。我们平时可以把它设置为不可见,以免干扰。
另外,经尝试,发现使用全局变量的方式不能存储值,后续继续探讨。

3、split方法
根据特定字符,把字符串拆分成多个小字符串;
如“3\u0081”,按照“\u0081来拆分”,则拆为"3"与"“两个字符串,所以要出去空字符串;
另外,之所以是”\u0081",这个是网页不能输入且没有意义的值;还可以用"\u0080"

上一篇:

下一篇: