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;
}
}
预览效果

asp.net动态增加服务器端控件并提交表单的更多相关文章
- asp.net动态网站repeater控件使用及分页操作介绍
asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...
- ASP.NET动态添加用户控件的方法
本文实例讲述了ASP.NET动态添加用户控件的方法.分享给大家供大家参考.具体实现方法如下: 为了让用户控件能ASP.NET页面实现动态添加,首先写一个接口IGetUCable,这个接口有一个函数,返 ...
- 037——VUE中表单控件处理之表单修饰符:lazy/number/trim
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wpf动态增加删除控件
我在xaml中定义了一个名字为morepictureWrapPan为WrapPanel,然后将控件添加在此WrapPanel中.由于要实现控件的删除功能,所以增加的textbox和button的名字都 ...
- asp.net动态解析用户控件(UserControl)
模块化的时候需要用到: #region asp.net解析用户控件 /// <summary> /// asp.net 解析用户控件 /// </summary> /// &l ...
- WebForm 【简单控件】【表单元素】
一.HTML 表单元素复习 (1)文本类 文本框:<input type="text" name="" id="" value=&qu ...
- (转) android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局
http://blog.csdn.net/bfboys/article/details/52563089
- 关于bootstrap--表单控件(disabled表单禁用、显示表单验证的样式)
1.disabled: (1)在input中加入disabled可使表单禁用,如图: <input class="form-control input-lg" id=&quo ...
- 上传预览 easyui部分控件获取focuse 表单验证
js: $(document).ready(function () { //$('#creater').combobox({ // url: '/VMS.UI/BindData/ScheamData? ...
随机推荐
- (第三周)wc.exe—命令行实现对指定目录下文件的操作
一.用户需求 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c ...
- RANCHER2.0 的简单使用
1. RANCHER2.0 能够管理 k8s 集群 也能够用来搭建 k8s 集群 但是因为网络问题 只测试了如何去管理集群 还没有去 测试 安装集群. 2. 创建rancher 服务的方法 dock ...
- Jamie's Contact Groups POJ - 2289(多重匹配 最大值最小化 最大流)
Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 8567 Accepted: ...
- HGOI 20181028 题解
HGOI 20181028(复赛备考) /* 真是暴力的一天,最后一题MLE?由于数组开得太大了!!! 270滚粗 考场上好像智商高了很多?!(假的) */ sol:暴力求解,然后没有数据范围吐槽一下 ...
- 洛谷 P3975 [TJOI2015]弦论 解题报告
P3975 [TJOI2015]弦论 题目描述 为了提高智商,ZJY开始学习弦论.这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为\(n\)的字符串,求 ...
- 【bzoj4537】 Hnoi2016—最小公倍数
http://www.lydsy.com/JudgeOnline/problem.php?id=4537 (题目链接) 题意 给出一个${n}$个点${m}$条边的无向图,每条边有两个权值${a,b} ...
- Python GIL全局解释器锁
'''在python原始解释器Cpython中存在GIL(Global Interpreter Lock,全局解释器锁),因此在执行Python代码 时,会产生互斥锁来限制线程对共享资源的访问,指导接 ...
- JavaScript学习复习
JavaScript 输出 使用 window.alert() 弹出警告框. 使用 document.write() 方法将内容写到 HTML 文档中. 使用 innerHTML 写入到 HTML 元 ...
- (转)Maven学习总结(一)——Maven入门 安装使用
备注 转自: 孤傲苍狼 http://www.cnblogs.com/xdp-gacl/p/3498271.html 只为成功找方法,不为失败找借口! 1. Maven的基本概念 Maven(翻译为& ...
- o2o优惠券使用预测
前沿: 这是天池的一个新人实战塞题目,原址 https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.e13 ...