asp.net动态增加服务器端控件并提交表单

为什么要用原生的呢?

1、目的 原生出现浏览器兼容性问题 极少,不用测试多浏览兼容性 。需要考虑到市面上的其他垃圾浏览器。

2、性能不好 如果不考虑第一条 你可以换一种方式

直接上代码

.aspx页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>DEMO</title>
</head>
<body>
    <form id="form1" runat="server">

        <br />
        <br />
        <asp:Label ID="Label2" runat="server" Text="动态控件"></asp:Label>
        <asp:PlaceHolder ID="phBody" runat="server"></asp:PlaceHolder>

        <br />
        <br />
        <br />
        <br />
        <br />
        <asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" Text="加三个动态控件" />
        <asp:Button ID="btnDelLast" runat="server" OnClick="btnDelLast_Click" Text="删除后面三个" />
        <br />
        <br />
        <br />
        <br />
        <asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="提交保存" />
        <br />
        <br />
        <asp:Label runat="server" ID="lbMsg" ForeColor="Red"></asp:Label>
    </form>
</body>
</html>

  

后台.cs代码

  

  protected void Page_Load(object sender, EventArgs e)
        {
            #region 初始化控件 

            if (ViewState["AddedControl"] == null)
            {
                ViewState["AddedControl"] = 1;
                CreateControl();
            }
            else
            {
                int cout = Convert.ToInt32(ViewState["AddedControl"]);
                for (int i = 0; i < cout; i++)
                {
                    CreateControl();
                }
            }
            #endregion

            if (!IsPostBack)
            {

            }
        }
        /// <summary>
        /// 给容器phBody创建动态控件
        /// </summary>
        /// <param name="index"></param>
        public void CreateControl()
        {
            Panel plBody = new Panel();
            TextBox txt = new TextBox();
            txt.Text = "";
            plBody.Controls.Add(txt);

            TextBox txt2 = new TextBox();
            txt2.Text = "";
            plBody.Controls.Add(txt2);

            TextBox txt3 = new TextBox();
            txt3.Text = "";
            plBody.Controls.Add(txt3);

            phBody.Controls.Add(plBody);
        }
        //获取动态添加的控件值
        protected void btnSave_Click(object sender, EventArgs e)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            for (int i = 0; i < phBody.Controls.Count; i++)
            {
                Control ctrl = phBody.Controls[i];

                for (int j = 0; j < ctrl.Controls.Count; j++)
                {
                    if (j <= 3)
                    {
                        TextBox txt = ctrl.Controls[j] as TextBox;
                        if (txt != null)
                        {
                            sb.Append(txt.Text);
                        }
                    }

                }
            }
            lbMsg.Text = sb.ToString();
        }
        //加三行
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (ViewState["AddedControl"] == null)
            {
                ViewState["AddedControl"] = 1;
            }
            else
            {
                int cout = Convert.ToInt32(ViewState["AddedControl"]);
                ViewState["AddedControl"] = cout + 1;
            }
            CreateControl();
        }
        //删除最后一行动态添加的控件
        protected void btnDelLast_Click(object sender, EventArgs e)
        {
            int index = phBody.Controls.Count - 1;
            phBody.Controls.RemoveAt(index);
            if (ViewState["AddedControl"] == null)
            {
                ViewState["AddedControl"] = 0;
            }
            else
            {
                int cout = Convert.ToInt32(ViewState["AddedControl"]);
                ViewState["AddedControl"] = cout - 1;
            }
        }

  

预览效果

时间: 2024-10-11 04:02:38

asp.net动态增加服务器端控件并提交表单的相关文章

关于bootstrap--表单控件(disabled表单禁用、显示表单验证的样式)

1.disabled: (1)在input中加入disabled可使表单禁用,如图: <input class="form-control input-lg" id="disabledInput" type="text" placeholder="表单已被禁用,不可输入" disabled></div> (2)如果fieldset设置了disabled属性,整个域都将处于被禁用状态,如图: <fi

asp.net页面按Enter键IE不提交表单

//当按下回车键时,让指定的按钮获取指定的文本框的事件                this.txtFNick.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.btnSearch.ClientID + ".focus();document.all." + this.btnSearch.ClientID + ".click();}&quo

Asp.NET之浅谈控件

一.web控件 1.文本框控件 TextBox控件 功能说明:用于显示文本和接收用户输入的文本 命名前缀:Txt ASPX代码: <asp:TextBox ID="TxtSample" runat="server" Text="TextBox Sample"></asp:TextBox> 重要属性:Text               显示在按钮上的文本 TextMode      设置文本的模式,"Single

在ASP.NET 的服务器端控件中有三种关于 ID 的属性

在ASP.NET 的服务器端控件中有三种关于 ID 的属性,即 ID, ClientID 和 UniqueID. ID 表示控件的服务器端编程的标识符,我们写"服务器端的代码",就要用到这个 ID, 通过这个 ID 可以在服务器端对服务器端控件的属性.方法和时间进行编程访问.(可写) ClientID 表示由服务器端生成的客户端控件的ID,"经常用于在客户端脚本中访问服务器控件所呈现的 HTML 元素".一般情况下与服务器端的 ID 相同,有时,不能为控件生成唯一的

Asp.Net 之 服务器端控件与客户端控件的区别

服务器控件,即Asp.Net的控件,控制这些控件必须经过服务器处理,然后响应用户,代码在服务器端解释执行,生成根据用户的浏览器而定的html元素. 客户端控件,即普通Html控件,使用script控制操作,由客户端浏览器解释执行. 服务器控件需要回发执行,当首次打开页面时,需初始化.由runat属性指示的,runat的值有且仅为一值"server".通过添加runat属性,一般的HTML控件可以被很方便地转换到服务器端运行,下面是一个简单的例子:<input type="

javascript获取asp.net服务器端控件的值

代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_A" %> <%@ Register Src="../UserControl/CtrlCalendar.ascx" TagName="CtrlCalendar" TagPrefix="uc1" %> <html>

ASP.NET服务器端控件和HTML控件的比较 (转)

区别:服务器端控件都会有个runat="Server"属性,这样才能够在后台对其进行修改,也就是在cs代码里面能对其进行修改.例如,当你放个HTML控件时,在CS代码中引用不出控件名,但加上runat="Server" 后在CS代码中就能引用该控件了. 其实ASP.NET 的服务器控件解析后最终返回到前台还是HTML控件.例如当你建个页面并放一个asp:textbox上去,然后运行页面,查看页面源文件就会发现放上的服务器控件变成了HTML的inupt type=&q

ASP.NET服务器端控件(class0617)

ASP.Net服务端基本控件介绍 ASP.Net服务端控件是ASP.Net对HTML的封装,在C#代码中就可以用txt1.Text=‘abc’这种方式来修改input的值,ASP.Net会将服务端控件转成HTML代码输出给浏览器.服务端控件是ASP.Net非常吸引初学者.非常容易上手的东西,也是最被人诟病的东西.物尽其用,服务端控件在内网系统.互联网系统的后台部分等访问频率不高的地方用的还是很适合的. (互联网公司,产品型公司(OA)) 在服务端控件的标签中写的属性如果不是控件内置的属性就会被原

ASP.NET--Web服务器端控件和Html控件

今天学习总结了一些相关概念和知识. 之前无论是做 单机的winform 还是 CS的winform 感觉,不到两年下来感觉还可以,虽然API有很多,但是还是比较熟悉基于WINDOWS消息机制的编程,但是现在网络硬件设施更新之快,BS 开发优势之大,不过需要的技术方面倒是得扩宽许多,JavaScript,CSS,Html都需要了解掌握,除webForm之外,对于现今主流的MVC更是需要学习. 概念: asp.net控件服务端控件  --> 响应服务端事件 HTML控件客户端控件   -- >