怎对动态创建控件进行验证和当Ajax环境遭到之运

第一为一个健康的动态创建控件,并拓展认证的代码

[前端aspx代码]

Ajax 1<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Test.aspx.cs” Inherits=”Test” %>
Ajax 2
Ajax 3<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
Ajax 4
Ajax 5<html xmlns=”http://www.w3.org/1999/xhtml” >
Ajax 6<head runat=”server”>
Ajax 7    <title>无标题页</title>
Ajax 8</head>
Ajax 9<body>
Ajax 10    <form id=”form1″ runat=”server”>
Ajax 11      
Ajax 12        <asp:Table ID=”Table1″ runat=”server”>
Ajax 13        </asp:Table>
Ajax 14        <asp:Button ID=”btnAddControl” runat=”server” Text=”动态创建控件” OnClick=”btnAddControl_Click” />  
Ajax 15    <asp:Button ID=”btnValidator” runat=”server” Text=”验证动态控件” Enabled=”false” />
Ajax 16    
Ajax 17    </form>
Ajax 18</body>
Ajax 19</html>

[后端Cs代码]

Ajax 20using System;
Ajax 21using System.Data;
Ajax 22using System.Configuration;
Ajax 23using System.Collections;
Ajax 24using System.Web;
Ajax 25using System.Web.Security;
Ajax 26using System.Web.UI;
Ajax 27using System.Web.UI.WebControls;
Ajax 28using System.Web.UI.WebControls.WebParts;
Ajax 29using System.Web.UI.HtmlControls;
Ajax 30
Ajax 31public partial class Test : System.Web.UI.Page
Ajax 32Ajax 33Ajax 34{
Ajax 35    private void Page_Load(object sender, System.EventArgs e)
Ajax 36Ajax 37    Ajax 38{
Ajax 39        
Ajax 40    }
Ajax 41
Ajax 42
Ajax 43    protected void btnAddControl_Click(object sender, EventArgs e)
Ajax 44Ajax 45    Ajax 46{        
Ajax 47        TextBox _TxtBox = new TextBox();//动态创建一个TextBox
Ajax 48        _TxtBox.ID = “TextBox1”; 
Ajax 49       
Ajax 50        RequiredFieldValidator _Require = new RequiredFieldValidator();//动态创建一个征控件
Ajax 51        _Require.ErrorMessage = “请输入”;
Ajax 52        _Require.SetFocusOnError = true;
Ajax 53        _Require.ControlToValidate = _TxtBox.ID;      
Ajax 54 
Ajax 55        TableCell Cell = new TableCell();
Ajax 56        Cell.Controls.Add(_TxtBox);
Ajax 57        Cell.Controls.Add(_Require);//将刚创建的亚个控件,加入Cell
Ajax 58
Ajax 59        TableRow Row = new TableRow();
Ajax 60        Row.Controls.Add(Cell);
Ajax 61        this.Table1.Rows.Add(Row);
Ajax 62
Ajax 63        btnValidator.Enabled = true;
Ajax 64    }
Ajax 65}
Ajax 66

运作测试,点击”动态创建控件”后,再点击”验证动态控件”,验证控件起作用了,一切正常

连下,我们参加Ajax环境[加入UpdatePanel控件],将前端代码改呢:

Ajax 67<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Test.aspx.cs” Inherits=”Test” %>
Ajax 68
Ajax 69<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
Ajax 70
Ajax 71<html xmlns=”http://www.w3.org/1999/xhtml” >
Ajax 72<head runat=”server”>
Ajax 73    <title>无标题页</title>
Ajax 74</head>
Ajax 75<body>
Ajax 76    <form id=”form1″ runat=”server”>
Ajax 77       <asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
Ajax 78        </asp:ScriptManager>
Ajax 79        
Ajax 80<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server” >
Ajax 81    <ContentTemplate>
Ajax 82        <div style=”border:solid 2px red”> <%–为突出展示,把UpdatePanel加了一个革命框–%>
Ajax 83        <asp:Table ID=”Table1″ runat=”server”>
Ajax 84        </asp:Table>
Ajax 85        <asp:Button ID=”btnAddControl” runat=”server” Text=”动态创建控件” OnClick=”btnAddControl_Click” />
Ajax 86       </div>
Ajax 87</ContentTemplate>
Ajax 88</asp:UpdatePanel>
Ajax 89    
Ajax 90    
Ajax 91      <asp:Button ID=”btnValidator” runat=”server” Text=”验证动态控件” Enabled=”true” />
Ajax 92    
Ajax 93    </form>
Ajax 94</body>
Ajax 95</html> 

重运行,发现并未道另行针对动态变化的控件进行验证了(也就是说,新创办的验证控件没起作用)
,怎么惩罚为?难道就这么放弃?经过一番品,发现了一个好有意思的解决办法,具体参看以下代码:

Ajax 96<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Test.aspx.cs” Inherits=”Test” %>
Ajax 97
Ajax 98<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
Ajax 99
Ajax 100<html xmlns=”http://www.w3.org/1999/xhtml” >
Ajax 101<head runat=”server”>
Ajax 102    <title>无标题页</title>
Ajax 103</head>
Ajax 104<body>
Ajax 105    <form id=”form1″ runat=”server”>
Ajax 106       <asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
Ajax 107        </asp:ScriptManager>
Ajax 108        
Ajax 109<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server” >
Ajax 110    <ContentTemplate>
Ajax 111        <div style=”border:solid 2px red”><%–为突出展示,把UpdatePanel加了一个革命框–%>
Ajax 112        <asp:Table ID=”Table1″ runat=”server”>
Ajax 113        </asp:Table>
Ajax 114        <asp:Button ID=”btnAddControl” runat=”server” Text=”动态创建控件” OnClick=”btnAddControl_Click” />
Ajax 115       </div>
Ajax 116</ContentTemplate>
Ajax 117</asp:UpdatePanel>
Ajax 118    
Ajax 119    
Ajax 120  <div style=”display:none”>
Ajax 121        <asp:TextBox ID=”_TxtNeverUsed” runat=”server” Text=”*”></asp:TextBox>
Ajax 122        <asp:RequiredFieldValidator ID=”_RequireNeverUsed” runat=”server” ErrorMessage=”*” ControlToValidate=”_TxtNeverUsed”></asp:RequiredFieldValidator>
Ajax 123    </div>
Ajax 124    <asp:Button ID=”btnValidator” runat=”server” Text=”验证动态控件” Enabled=”true” />
Ajax 125    
Ajax 126    </form>
Ajax 127</body>
Ajax 128</html>
Ajax 129

注意点蓝色之代码,再次运行,哈哈,居然可以了!

相关文章