前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何对动态创建控件进行验证以及在Ajax环境中的使用

如何对动态创建控件进行验证以及在Ajax环境中的使用

作者头像
菩提树下的杨过
发布2018-01-22 16:43:47
7.7K0
发布2018-01-22 16:43:47
举报

首先给一个常规的动态创建控件,并进行验证的代码

[前端aspx代码]

代码语言:javascript
复制
<%@ 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代码]

代码语言:javascript
复制
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控件],将前端代码改为:

代码语言:javascript
复制
<%@ 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>

再次运行,发现没办法再对动态生成的控件进行验证了(也就是说,新创建的验证控件没起作用) ,怎么办呢?难道就这样放弃?经过一番尝试,发现了一个很有趣的解决办法,具体参看以下代码:

代码语言:javascript
复制
<%@ 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>

注意上面蓝色的代码,再次运行,哈哈,居然可以了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档