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? ...
随机推荐
- Locality Sensitive Hashing,LSH
1. 基本思想 局部敏感(Locality Senstitive):即空间中距离较近的点映射后发生冲突的概率高,空间中距离较远的点映射后发生冲突的概率低. 局部敏感哈希的基本思想类似于一种空间域转换思 ...
- C语言入门:02.第一个C语言程序
一.开发工具的选择(1)可以用来写代码的工具:记事本.UltraEdit.Vim.Xcode等(2)选择Xcode的原因:苹果官方提供的开发利器.简化开发过程.有高亮显示功能 (3)使用Xcode新建 ...
- wifi 标准
简介 https://smb.pconline.com.cn/1149/11491365.html
- eclipse运行tomcat中发生异常重启后tomcat端口被占用
在任务管理器关闭javaw进程即可,一般此时会有两个以上javaw进程,关闭其中占用内存较少的那个 可用netstat -ano命令查看端口占用情况
- python day4 ---------------文件的基本操作
1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' str3 = ' '.joi ...
- pgm5
这部分讨论 inference 里面基本的问题,即计算 这类 query,这一般可以认为等价于计算 ,因为我们只需要重新 normalize 一下关于 的分布就得到了需要的值,特别是像 MAP 这类 ...
- MT【173】齐次消元单变量
已知$x\ge0,x^2+(y-2)^2=1,W=\dfrac{3x^2+2\sqrt{3}xy+5y^2}{x^2+y^2}$,求$W$的最值. 提示:$x\ne0$时,设$t=\dfrac{y}{ ...
- angular的一次小错误
前台页面的错误: 在使用angular的时候,发现了标签等不能解析,忙了一个小时没找见错误在哪,最后才发现,原来ng-app,ng-controller等声明错了地方,声明在了div上,而不是在bod ...
- 界面编程之QT的信号与槽20180725
/*******************************************************************************************/ 一.指定父对 ...
- centos7下设置opencv环境变量
最近要装YOLO,但是MAKE的时候总是找不到OPENCV的路径, 原因是:我以前卸载过一次OPENCV,然后自己重新安装了opencv2.4.10, 因为当时只在QT 中用,所以编译完也没有设置环 ...