zoukankan
html css js c++ java
如何对动态创建控件进行验证以及在Ajax环境中的使用
首先给一个常规的动态创建控件,并进行验证的代码
[前端aspx代码]
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Test.aspx.cs
"
Inherits
=
"
Test
"
%>
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head runat
=
"
server
"
>
<
title
>
无标题页
</
title
>
</
head
>
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
asp:Table ID
=
"
Table1
"
runat
=
"
server
"
>
</
asp:Table
>
<
asp:Button ID
=
"
btnAddControl
"
runat
=
"
server
"
Text
=
"
动态创建控件
"
OnClick
=
"
btnAddControl_Click
"
/>
<
asp:Button ID
=
"
btnValidator
"
runat
=
"
server
"
Text
=
"
验证动态控件
"
Enabled
=
"
false
"
/>
</
form
>
</
body
>
</
html
>
[后端Cs代码]
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
Test : System.Web.UI.Page
{
private
void
Page_Load(
object
sender, System.EventArgs e)
{
}
protected
void
btnAddControl_Click(
object
sender, EventArgs e)
{
TextBox _TxtBox
=
new
TextBox();
//
动态创建一个TextBox
_TxtBox.ID
=
"
TextBox1
"
;
RequiredFieldValidator _Require
=
new
RequiredFieldValidator();
//
动态创建一个验证控件
_Require.ErrorMessage
=
"
请输入
"
;
_Require.SetFocusOnError
=
true
;
_Require.ControlToValidate
=
_TxtBox.ID;
TableCell Cell
=
new
TableCell();
Cell.Controls.Add(_TxtBox);
Cell.Controls.Add(_Require);
//
将刚才创建的二个控件,加入Cell
TableRow Row
=
new
TableRow();
Row.Controls.Add(Cell);
this
.Table1.Rows.Add(Row);
btnValidator.Enabled
=
true
;
}
}
运行测试,点击"动态创建控件"后,再点击"验证动态控件",验证控件起作用了,一切正常
接下来,我们加入Ajax环境[加入UpdatePanel控件],将前端代码改为:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Test.aspx.cs
"
Inherits
=
"
Test
"
%>
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head runat
=
"
server
"
>
<
title
>
无标题页
</
title
>
</
head
>
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
<ContentTemplate>
<div style="border:solid 2px red"> <%--为突出显示,把UpdatePanel加了一个红色框--%>
<
asp:Table ID
=
"
Table1
"
runat
=
"
server
"
>
</
asp:Table
>
<
asp:Button ID
=
"
btnAddControl
"
runat
=
"
server
"
Text
=
"
动态创建控件
"
OnClick
=
"
btnAddControl_Click
"
/>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<
asp:Button ID
=
"
btnValidator
"
runat
=
"
server
"
Text
=
"
验证动态控件
"
Enabled="true"
/>
</
form
>
</
body
>
</
html
>
再次运行,发现没办法再对动态生成的控件进行验证了(也就是说,新创建的验证控件没起作用)
,怎么办呢?难道就这样放弃?经过一番尝试,发现了一个很有趣的解决办法,具体参看以下代码:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Test.aspx.cs
"
Inherits
=
"
Test
"
%>
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head runat
=
"
server
"
>
<
title
>
无标题页
</
title
>
</
head
>
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
asp:ScriptManager ID
=
"
ScriptManager1
"
runat
=
"
server
"
>
</
asp:ScriptManager
>
<
asp:UpdatePanel ID
=
"
UpdatePanel1
"
runat
=
"
server
"
>
<
ContentTemplate
>
<
div style
=
"
border:solid 2px red
"
><%--
为突出显示,把UpdatePanel加了一个红色框
--%>
<
asp:Table ID
=
"
Table1
"
runat
=
"
server
"
>
</
asp:Table
>
<
asp:Button ID
=
"
btnAddControl
"
runat
=
"
server
"
Text
=
"
动态创建控件
"
OnClick
=
"
btnAddControl_Click
"
/>
</
div
>
</
ContentTemplate
>
</
asp:UpdatePanel
>
<div style="display:none">
<asp:TextBox ID="_TxtNeverUsed" runat="server" Text="*"></asp:TextBox>
<asp:RequiredFieldValidator ID="_RequireNeverUsed" runat="server" ErrorMessage="*" ControlToValidate="_TxtNeverUsed"></asp:RequiredFieldValidator>
</div>
<
asp:Button ID
=
"
btnValidator
"
runat
=
"
server
"
Text
=
"
验证动态控件
"
Enabled
=
"
true
"
/>
</
form
>
</
body
>
</
html
>
注意上面蓝色的代码,再次运行,哈哈,居然可以了!
作者:
菩提树下的杨过
出处:
http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
相关阅读:
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
RocketMQ-Console安装及RocketMQ命令行管理工具介绍
RocketMQ之一:RocketMQ整体介绍
Prometheus 监控之 zookeeper
详解MySQL数据类型
Linux2:Linux目录结构
再谈AbstractQueuedSynchronizer3:基于AbstractQueuedSynchronizer的并发类实现
再谈AbstractQueuedSynchronizer2:共享模式与基于Condition的等待/通知机制实现
Java虚拟机15:再谈四种引用状态
再谈AbstractQueuedSynchronizer1:独占模式
原文地址:https://www.cnblogs.com/yjmyzz/p/1011808.html
最新文章
SpringCloud学习笔记:声明式调用Feign(4)
Visual Studio Code常用设置及快捷键
SpringCloud学习笔记:负载均衡Ribbon(3)
SpringCloud学习笔记:SpringCloud简介(1)
SpringCloud学习笔记:服务注册与发现Eureka(2)
Three.js 快速上手以及在 React 中运用[转]
Cesium原理篇:GroundPrimitive【转】
Cesium 1.54评测 【转】
Cesium中的几种坐标和相互转换【转】
Cesium学习笔记-工具篇 git
热门文章
Cesium原理篇:6 Render模块(6: Instance实例化)【转】
Cesium原理篇:6 Render模块(3: Shader)【转】
Cesium学习笔记-工具篇20-PrimitiveTexture自定义渲染-贴图【转】
Cesium的Property机制总结[转]
docker
mysql导入导出sql文件
Elasticsearch 技术分析: 自动发现机制- Zen Discoveryedit
mysql删除数据库中的所有表
helm --dry-run --debug这个可选参数做调试
Crontab -e You are not allowed to use this program (crontab)
Copyright © 2011-2022 走看看