dynamically add controls and validators - always false

Discussion in 'ASP .Net' started by Christian H, Jul 23, 2003.

  1. Christian H

    Christian H Guest

    Based on the content in my database, I need to populate different form
    controls and validators, such as textbox, dropdownlist,
    requiredfieldvalidators , etc.

    Then I need to check if the form has been filled out correctly. If so, I
    need to update a database, and do other things.

    In order to check if the form is ok, I've tried looping through the
    validator controls, and I've also tried using page.isvalid.

    Nomatter what, the form seems to be incorrrectly filled out. The validator
    controls comes out as "false", and Page.isvalid also comes out as false.


    Regards C.H




    Here is a modified example of my problem, so that you can see what I'm
    dealing with.

    <%@ Page language="c#" Codebehind="testfil1.aspx.cs" AutoEventWireup="false"
    Inherits="smbuClass.testfil1" Trace=true enableViewState=false %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>testfil1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema"
    content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form runat="server" ID="Form1" method="post" action="testfil1.aspx">
    <asp:placeholder id="plh" runat="server" />
    <asp:button Text="Click" runat="server" CausesValidation="true"
    ID="Button" />
    </form>
    </body>
    </HTML>

    using System;
    using System.Data;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Collections;

    namespace smbuClass
    {
    public class testfil1 : System.Web.UI.Page
    {

    protected RequiredFieldValidator validator2 = new
    RequiredFieldValidator();
    protected TextBox txtfield=new TextBox();
    protected System.Web.UI.WebControls.Button Button;
    protected PlaceHolder plh;

    private void Page_Load(Object sender,EventArgs e)
    {

    txtfield.ID="txtfield";
    plh.Controls.Add(txtfield);

    validator2.ControlToValidate=txtfield.ID+"";
    validator2.ID="validator2";
    validator2.Text = "Error";
    validator2.ErrorMessage="Error";
    validator2.EnableClientScript=false;
    plh.Controls.Add(validator2);


    if(Page.IsPostBack)
    {
    Page.Validate();
    if(Page.IsValid)
    Response.Write("all ok");
    else
    Response.Write("not ok");

    foreach(BaseValidator b in Page.Validators)
    {
    Trace.Warn(b.IsValid + " " +b.ID + " ");
    }

    }





    }


    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
    }

    private void InitializeComponent()
    {
    this.Load += new System.EventHandler(this.Page_Load);

    }

    }
    }
     
    Christian H, Jul 23, 2003
    #1
    1. Advertising

  2. Christian H

    Teemu Keiski Guest

    I go track of the error now.

    Change the code like this:


    protected override void CreateChildControls()

    {

    RequiredFieldValidator validator2 = new RequiredFieldValidator();



    TextBox txtfield=new TextBox();

    txtfield.ID="txtfield";

    plh.Controls.Add(txtfield);



    plh.Controls.Add(validator2);

    validator2.ControlToValidate=txtfield.ID;

    validator2.ID="validator2";

    validator2.Text = "Error";

    validator2.ErrorMessage="Error";

    validator2.EnableClientScript=false;

    }



    Just add this overridden CreateChildControls to the Page and remove the
    relevant code from Page_Load. That should do it. (Page.Validate etc can
    still be where they are now)

    --
    Teemu Keiski
    MCP, Designer/Developer
    Mansoft tietotekniikka Oy
    http://www.mansoft.fi

    AspInsiders Member, www.aspinsiders.com
    ASP.NET Forums Moderator, www.asp.net
    AspAlliance Columnist, www.aspalliance.com

    "Christian H" <> wrote in message
    news:...
    > Based on the content in my database, I need to populate different form
    > controls and validators, such as textbox, dropdownlist,
    > requiredfieldvalidators , etc.
    >
    > Then I need to check if the form has been filled out correctly. If so, I
    > need to update a database, and do other things.
    >
    > In order to check if the form is ok, I've tried looping through the
    > validator controls, and I've also tried using page.isvalid.
    >
    > Nomatter what, the form seems to be incorrrectly filled out. The validator
    > controls comes out as "false", and Page.isvalid also comes out as false.
    >
    >
    > Regards C.H
    >
    >
    >
    >
    > Here is a modified example of my problem, so that you can see what I'm
    > dealing with.
    >
    > <%@ Page language="c#" Codebehind="testfil1.aspx.cs"

    AutoEventWireup="false"
    > Inherits="smbuClass.testfil1" Trace=true enableViewState=false %>
    > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    > <HTML>
    > <HEAD>
    > <title>testfil1</title>
    > <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    > <meta name="CODE_LANGUAGE" Content="C#">
    > <meta name="vs_defaultClientScript" content="JavaScript">
    > <meta name="vs_targetSchema"
    > content="http://schemas.microsoft.com/intellisense/ie5">
    > </HEAD>
    > <body MS_POSITIONING="GridLayout">
    > <form runat="server" ID="Form1" method="post" action="testfil1.aspx">
    > <asp:placeholder id="plh" runat="server" />
    > <asp:button Text="Click" runat="server" CausesValidation="true"
    > ID="Button" />
    > </form>
    > </body>
    > </HTML>
    >
    > using System;
    > using System.Data;
    > using System.Web.UI;
    > using System.Web.UI.WebControls;
    > using System.Collections;
    >
    > namespace smbuClass
    > {
    > public class testfil1 : System.Web.UI.Page
    > {
    >
    > protected RequiredFieldValidator validator2 = new
    > RequiredFieldValidator();
    > protected TextBox txtfield=new TextBox();
    > protected System.Web.UI.WebControls.Button Button;
    > protected PlaceHolder plh;
    >
    > private void Page_Load(Object sender,EventArgs e)
    > {
    >
    > txtfield.ID="txtfield";
    > plh.Controls.Add(txtfield);
    >
    > validator2.ControlToValidate=txtfield.ID+"";
    > validator2.ID="validator2";
    > validator2.Text = "Error";
    > validator2.ErrorMessage="Error";
    > validator2.EnableClientScript=false;
    > plh.Controls.Add(validator2);
    >
    >
    > if(Page.IsPostBack)
    > {
    > Page.Validate();
    > if(Page.IsValid)
    > Response.Write("all ok");
    > else
    > Response.Write("not ok");
    >
    > foreach(BaseValidator b in Page.Validators)
    > {
    > Trace.Warn(b.IsValid + " " +b.ID + " ");
    > }
    >
    > }
    >
    >
    >
    >
    >
    > }
    >
    >
    > override protected void OnInit(EventArgs e)
    > {
    > //
    > // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    > //
    > InitializeComponent();
    > base.OnInit(e);
    > }
    >
    > private void InitializeComponent()
    > {
    > this.Load += new System.EventHandler(this.Page_Load);
    >
    > }
    >
    > }
    > }
    >
    >
    >
    >
     
    Teemu Keiski, Jul 23, 2003
    #2
    1. Advertising

  3. Christian H

    Christian H Guest

    thank you! - where can I learn more?

    Thank you!

    I need some advice on what to read in order to learn more about these
    things.
    Why did I need to override that method, and how will I know when I will need
    to override a method next time...?

    I've got a feeling I'm going to need to override methods a lot with this
    project
    Do you have an book suggestion, or online tutorials that will educate me on
    this?

    Regards Christian H.
     
    Christian H, Jul 23, 2003
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ratman
    Replies:
    0
    Views:
    693
    Ratman
    Sep 14, 2004
  2. =?Utf-8?B?TFU=?=
    Replies:
    3
    Views:
    610
    Lucas Tam
    Mar 30, 2005
  3. Jeffrey Todd
    Replies:
    1
    Views:
    4,152
    Peter Blum
    Jun 2, 2005
  4. trans.  (T. Onoma)
    Replies:
    0
    Views:
    162
    trans. (T. Onoma)
    Sep 25, 2004
  5. trans.  (T. Onoma)
    Replies:
    1
    Views:
    175
    David A. Black
    Sep 25, 2004
Loading...

Share This Page