C#后台创建控件并获取值
前台代码
<form id="form1" runat="server"> <div> <div class="item"> Please input a number: <asp:TextBox runat="server" CssClass="item" ID="txtTextCount"></asp:TextBox> <asp:Button runat="server" ID="btnCreate" Text="Create TextBox List" ValidationGroup="CreateTextBox" OnClick="btnCreate_Click" /> <asp:Button runat="server" ID="btnOK" Text="获取控件值" ValidationGroup="ShowListContent" OnClick="btnOK_Click" /> </div> <div runat="server" id="divControls" class="item"> </div> <div runat="server" id="divMessage"> </div> </div> </form>
protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack) { int txtCount = int.Parse(txtTextCount.Text); // 注意:每次PostBack时,都需要重新动态创建TextBox CreateTextBoxList(txtCount); } } ///<summary> /// Create textbox list ///</summary> ///<param name="num">textbox list count</param> private void CreateTextBoxList(int num) { HtmlGenericControl div; HtmlGenericControl span; TextBox txt; //RegularExpressionValidator rev; ; i < num; i++) { //创建div div = new HtmlGenericControl(); div.TagName = "div"; div.ID = "divTextBox" + i.ToString(); div.Attributes["class"] = "item2"; //创建span span = new HtmlGenericControl(); span.ID = "spanTextBox" + i.ToString(); span.InnerHtml = ).ToString() + ":"; //创建TextBox txt = new TextBox(); txt.ID = "txt" + i.ToString(); txt.CssClass = "input"; //创建格式验证控件,并且将其关联到对应的TextBox //rev = new RegularExpressionValidator(); //rev.ID = "rev" + i.ToString(); //rev.ControlToValidate = txt.ID; //rev.Display = ValidatorDisplay.Dynamic; //rev.ValidationGroup = "ShowListContent"; //rev.ValidationExpression = @"(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"; //rev.ErrorMessage = "Invalid url Address!"; //添加控件到容器 div.Controls.Add(span); div.Controls.Add(txt); //div.Controls.Add(rev); divControls.Controls.Add(div); } } protected void btnCreate_Click(object sender, EventArgs e) { txtTextCount.Enabled = false; btnCreate.Enabled = false; } protected void btnOK_Click(object sender, EventArgs e) { TextBox txt; HtmlGenericControl span; StringBuilder sbResult = new StringBuilder(); int txtCount = int.Parse(txtTextCount.Text); //遍历获取动态创建的TextBox们中的Text值 ; i < txtCount; i++) { //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容 txt = divControls.FindControl("txt" + i.ToString()) as TextBox; ) { sbResult.AppendFormat(, txt.Text.Trim()); } } //遍历获取动态创建的TextBox们中的Text值 ; i < txtCount; i++) { //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容 span = divControls.FindControl("spanTextBox" + i.ToString()) as HtmlGenericControl ; ) { sbResult.AppendFormat(, span.InnerText.Trim()); } } divMessage.InnerHtml = sbResult.ToString(); }
C#后台创建控件并获取值的更多相关文章
- 2018-8-10-win10-uwp-使用资源在后台创建控件
title author date CreateTime categories win10 uwp 使用资源在后台创建控件 lindexi 2018-08-10 19:17:19 +0800 2018 ...
- Jquery 动态追加控件并获取值
先展示通过动态添加控件的结果: 实现步骤: 1.引用js文件 <script src="Script/jquery-1.5.1.min.js" type="text ...
- python通过win32api轻松获取控件的属性值
1.如何利用句柄操作windows窗体 首先,获得窗体的句柄 win32api.FindWindows() 第二,获得窗体中控件的id号,spy++ 第三,根据控件的ID获得控件的句柄(hwnd) ...
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~ 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
看两个例子,一个是在一个进程里设置另外一个进程中控件的属性.另外一个是在一个进程里获取另外一个进程中控件的属性. 第一个例子 最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时 ...
- 问题解决——基于MSCOMM32.OCX控件的类在客户机不能创建控件
大家不要笑我了,我不喜欢用那个人家写的串口类. 所以导出了MSCOMM32.OCX的类,然后在此基础上写了一个串口打印机的小工具类. -------------声明--------------- 本文 ...
- 从.NET 1.1 升级到.NET 4.0 遇到 线程间操作无效: 从不是创建控件 [XX] 的线程访问它.
有两种方式解决 1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;2.使用Invoke等委托函数 问题原因是 .NET2.0 以后拒绝 ...
- 线程间操作无效: 从不是创建控件“button1”的线程访问它。
.net2后是不能跨线程访问控件的.,窗体上的控件是当前线程创建的,当用户异步执行一个方法:在该方法中给窗体上的控件赋值,记住:当执行一个异步委托的时候,其实 就是开了一个线程去执行那个方法,这样就会 ...
- 【转】线程间操作无效: 从不是创建控件“textBox2” 的线程访问它。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- [Winform]线程间操作无效,从不是创建控件的线程访问它的几个解决方案,async和await?
目录 概述 取消跨线程检查 使用委托异步调用 sync和await 总结 概述 最近在qq群里有一朋友,问起在winform中怎么通过开启线程的方式去处理耗时的操作,比如,查看某个目录下所有的文件,或 ...
随机推荐
- docker 导入下载模板
<pre name="code" class="ruby">docker:/root# cat centos-6-x86.tar.gz | dock ...
- C语言的本质(8)——副作用与顺序点
C 语言中,术语副作用是指对数据对象或者文件的修改.例如以下语句 var = 99; 的副作用是把 var 的值修改成 99.对表达式求值也可能产生副作用,例如: se = 100 对这个表达式求值所 ...
- Android Activity 启动模式详解
最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...
- O2O领域添新军,正品网加快布局的战略考量
前不久.正品网採购虚拟运营商30万170号码的招标公告引发了业界的广泛关注.一方面,虚拟运营商正处于"徘徊不定"的十字路口.据业内知情人士透露,眼下12家虚拟运营商企业共放号在20 ...
- sql权限报表小知识
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIG ...
- 关于中文乱码的解决方法(URL方式)
假设keyWord ='阳光'; url="play.jsp? keyWord ="+ keyWord 若按照上述的地址直接访问,则中文会变成乱码.必须使用encodeURI()进 ...
- android笔试题
1.请谈一下Android系统的架构. 答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布 ...
- WEB开发之如何改善PHP开发方式
改善PHP开发方式一般可以分为以下几种实现方式: 1.组织和样式 找出一种适合你的组织方法和编码样式,并且一直坚持下去,这样的话,你的代码的组织和布局会变得十分有条理.我们不应该轻视代码的组织 ...
- 括号匹配算法 C语言实现
#include <stdio.h> #include <malloc.h> //malloc,realloc #include <math.h> //含有over ...
- Windows Azure Web Role 的 IIS 重置
如果您是一名 Web开发人员,您很可能使用过"简单快捷"的iisreset命令重置运行不正常的 IIS主机.这种方法通常在经典的 Windows Server VM上非常有效 ...