为什么要用原生的呢?

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;
}
}

  

预览效果

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

  1. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

  2. ASP.NET动态添加用户控件的方法

    本文实例讲述了ASP.NET动态添加用户控件的方法.分享给大家供大家参考.具体实现方法如下: 为了让用户控件能ASP.NET页面实现动态添加,首先写一个接口IGetUCable,这个接口有一个函数,返 ...

  3. 037——VUE中表单控件处理之表单修饰符:lazy/number/trim

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. wpf动态增加删除控件

    我在xaml中定义了一个名字为morepictureWrapPan为WrapPanel,然后将控件添加在此WrapPanel中.由于要实现控件的删除功能,所以增加的textbox和button的名字都 ...

  5. asp.net动态解析用户控件(UserControl)

    模块化的时候需要用到: #region asp.net解析用户控件 /// <summary> /// asp.net 解析用户控件 /// </summary> /// &l ...

  6. WebForm 【简单控件】【表单元素】

    一.HTML 表单元素复习 (1)文本类 文本框:<input type="text" name="" id="" value=&qu ...

  7. (转) android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局

    http://blog.csdn.net/bfboys/article/details/52563089

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

    1.disabled: (1)在input中加入disabled可使表单禁用,如图: <input class="form-control input-lg" id=&quo ...

  9. 上传预览 easyui部分控件获取focuse 表单验证

    js: $(document).ready(function () { //$('#creater').combobox({ // url: '/VMS.UI/BindData/ScheamData? ...

随机推荐

  1. 软工结对项目之词频统计update

    队友 胡展瑞 031602215 作业页面 GitHub 具体分工 111500206 赵畅:负责WordCount的升级,添加新的命令行参数支持(自定义输入输出文件,权重词频统计,词组统计等所有新功 ...

  2. jieba分词学习

    具体项目在githut里面: 应用jieba库分词 1)利用jieba分词来统计词频: 对应文本为我们队伍的介绍:jianjie.txt: 项目名称:碎片 项目描述:制作一个网站,拾起日常碎片,记录生 ...

  3. js 复制到剪切板

    function copyTextToClipboard(text) { var copyFrom = $('<textarea/>'); copyFrom.text(text); $(' ...

  4. Jenkins发送邮件中文乱码问题解决

    在环境变量中添加: JAVA_TOOL_OPTIONS  =  -Dfile.encoding=UTF8 配置好后,重启Jenkins即可

  5. java 23种设计模式 深入浅出

    以下内容只作为对自己对知识进行总结,如有引用他人文章会在文段末尾表明出处: Java的23种设计模式 23种设计模式总共可以分为三大类,进行不定期更新总结,将逐步展开介绍自己对设计模式的理解,多多指教 ...

  6. redis后台启动配置

    在cmd窗口启动redis,窗口关闭后再次操作会报错. 将redis安装为服务,可使其在后台启动,无须担心误操作关闭服务窗口. 配置如下: 进入redis目录,输入如下命令执行即可: redis-se ...

  7. 【刷题】BZOJ 3653 谈笑风生

    Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称"a比b不知道 高明到哪里去了". ? 设a 和 b 为 ...

  8. 动态dp 板子

    动态dp 瞎扯两句吧 先从序列上理解,维护链的最大独立集. 考虑是从左边转移的,那么矩阵的转移唯一,直接放在线段树上就可以了. 放在树上的话,儿子都可以转移,把轻儿子的转移放在子链链头更新,然后每条链 ...

  9. 洛谷P1445 樱花

    题意:求 1/x + 1/y = 1/(n!)的正整数解个数. 解:神仙...... 设(n!) = t 打表发现 x ∈ [t+1 , 2t] 反正就是拿到式子以后乱搞一通然后发现得到了这个很美观的 ...

  10. 包学会之浅入浅出Vue.js:开学篇(转)

    包学会之浅入浅出Vue.js:开学篇 蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门>书籍的翻译工作.目前专注前端图片优化与新技术的探研. ...