如何对动态创建控件进行验证以及在Ajax环境中的使用
时间:2022-04-23
本文章向大家介绍如何对动态创建控件进行验证以及在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>
注意上面蓝色的代码,再次运行,哈哈,居然可以了!
- H2Engine游戏服务器设计之属性管理器
- linux epoll 开发指南-【ffrpc源码解析】
- Python之递归函数
- 你不得不会的MarkDown
- 状态机的实现探讨
- Docker入门实战(二)——Docker镜像操作
- 使用强大的 Mockito 来测试你的代码
- java学习手册-CentOS 6.3(x86_32)下安装Oracle 10g R2
- Docker入门实战(三)——用Dockerfile构建镜像
- C++中消息自动派发之二 About IDL解析器
- C++中消息自动派发之三 About JSON Encode
- Linux管道命令
- Linux数据流重定向
- C++中消息自动派发之四 使用IDL构建Chat Server
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux磁盘管理
- Vue项目中简单的store模式
- 5分钟学linux命令之split
- 分母为0一定会抛异常吗?
- 明明有class为什么还是报ClassNotFoundException?
- Maven 错误找不到符号
- 环境变量配置为jdk8,却显示java版本为jdk7
- Python脚本按照当前日期创建多级目录
- linux常用的读取文件内容指令
- Executors.newSingleThreadScheduledExecutor();线程池中放入多个线程问题
- SqlServer批量删除表
- java 获取一天内crontab任务执行的时间点
- Python自学成才之路 魔术方法之一元,二元运算符
- Python自学成才之路 魔术方法之打印对象实例
- Python自学成才之路 装饰器必用的wraps注解