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中怎么通过开启线程的方式去处理耗时的操作,比如,查看某个目录下所有的文件,或 ...
随机推荐
- c# xml操作类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- 百度静态资源(JS)公共库
例如: chosen http://apps.bdimg.com/libs/chosen/1.1.0/chosen.jquery.min.js classlist http://apps ...
- cnn softmax regression bp求导
内容来自ufldl,代码参考自tornadomeet的cnnCost.m 1.Forward Propagation convolvedFeatures = cnnConvolve(filterDim ...
- 元数据(meta-data)
本章所介绍的元数据的知识,可能在定制系统时会用到.因为那是后需要修改底层框架的一些内容 一.元数据的定义 在AndroidManifest.xml中如下书写: <activity android ...
- Error occured processing XML 'Cannot find class [springmvc.extention.BeanArgumentResolver]'.
<Description Resource Path Location Type Error occured processing XML 'Cannot find class [springm ...
- Oracle自动执行任务(存储过程)
Oracle自动执行任务(存储过程) SQL> variable job number;SQL> begin2 dbms_job.submit(:job,'存储过程名;',sysdate, ...
- jboss清楚缓存
在服务器上部署或更新时,常常会忘记删除JBOSS的缓存.忘记删除缓存的后果,经常就是改好了代码却还是原来的错误,然后查找半天,浪费时间.所以在重新部署JBOSS,在启动JBOSS前一定要删除JBOSS ...
- Linux学习sed命令
sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送 ...
- English words
英语指路常用单词 the one-way street单行道traffic light红绿灯 fork road三叉路口intersection/crossroad 十字路口T road 丁字路口in ...
- python encode和decode函数说明【转载】
python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在p ...