Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / February 2006

Tip: Looking for answers? Try searching our database.

Validators on dynamic UserControls

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
rgparkins@hotmail.com - 20 Feb 2006 16:52 GMT
Hi

I am currently having problems with Validators in a user control. I am
creating a wizard sign-up process which have the allocated step
(hyperlinks" at the top of the page. A user can also click
next/previous. Dependant on the current step in the sign-up process I
am loading a new user control as I dont want to have 7-8 pages, just
one page and load the control dynamically.

All is sweet at the moment apart from the validation controls that are
assigned to each user control. Any link that is clicked or button that
is clicked should cause validation on that user control, however I have
performed the following (from another thread)

1. Set EnableClientScript=false on each validator.
2. Set CausesValidation=false on each button that submits the page.
This
prevents the Page.Validate() method from begin called automatically by
the
button.
3. In your click event method, you will call the Validate() method on
each
validator that is associated with the submit button. Then you will test
the
IsValid property to be true on each validator before saving.

I am performing this process BUT as I loop on each validate control
with the allocated user control the isValid IS ALWAYS true. I am sure
its something to do with not loading something or just a simple step I
have missed.. I would appreciate any help on this, some code:

private bool Persist() {
//first check whether we have valid data
AddStockCommon ctrl =
(AddStockCommon)this.FindControl(String.Format("{0}{1}",
ViewState["Context"], ".ascx"));

foreach(Control ct in ctrl.Controls) {
 if (ct is BaseValidator) {
    BaseValidator validator = (BaseValidator)ct;
    validator.Validate();

    if (!validator.IsValid) {
        return false;
    }
 }

return true;
}

Many thanks

Richard
rgparkins@hotmail.com - 21 Feb 2006 08:41 GMT
OK

To anyone out there..... Further investigations yielded no solutions
until I decided to make the validators visible (They were set invisible
as I wanted a summary to appear only).

Setting them Visible suddenly made the client side validators work on
the browser, but I have to say that this looks clunky and totally
unusable, (mabe my designer could do something :))

I am now going to do my own checks on the server upon a post back, as
this will say me time understanding these validators which to all
intents and purposes seem like a last minute thought to .NET 1.1.

I hope they have improved on .NET 2.0, and if anyone can either point
me in the right direction then I'll maybe return to this validation
technique but for now its easier (on the eye and technically) to
perform all validation server side...

If anyone can tell me why setting these validators Invisible affects
how they work then I would be glad to hear.

Many thanks

Richard
webonomic - 22 Feb 2006 17:01 GMT
Check out the image in this article.  They talk about the same thing,
that the validation summary is ugly.

http://www.codeproject.com/aspnet/vsum.asp

There may be a solution here as well
http://www.asp101.com/articles/manu/validationsummary/default.asp

jp

> OK
>
[quoted text clipped - 21 lines]
>
> Richard
Peter Blum - 23 Feb 2006 16:37 GMT
By definition, when any web control has Visible=false, that turns off the
control. It will not generate anything to the client-side. It isn't a style
that shows and hide things. (Besides the validators have the job of showing
and hiding themselves.) Since the validator is off when Visible=false, the
call to Validator.Validate() or even Page.Validate() will do nothing to the
validator.

Recommendation: Use Validation Groups, one for each page. This comes with
ASP.NET 2.0 and my Professional Validation And More
(http://www.peterblum.com/vam/home.aspx) which works with all versions of
ASP.NET.

>>> Setting them Visible suddenly made the client side validators work on
>>> the browser, but I have to say that this looks clunky and totally
>>> unusable, (mabe my designer could do something :))

If you set EnableClientScript=false on each validator, there should be no
client-side validation. Confirm these settings.
What does "looks clunky" mean? One guess is that validators are changing
their spacing on the screen, moving things around. Use
Validator.Display=Static or set the Text property to "*" and add a
ValidationSummary to show the actual error.

--- Peter Blum
www.PeterBlum.com
Email: PLBlum@PeterBlum.com
Creator of "Professional Validation And More" at
http://www.peterblum.com/vam/home.aspx

> Hi
>
[quoted text clipped - 49 lines]
>
> Richard

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.