Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Possible to validate between INamingContainers in 2.0?

Reply
Thread Tools

Possible to validate between INamingContainers in 2.0?

 
 
daokfella
Guest
Posts: n/a
 
      06-07-2007
I have a composite control that contains a texbox and comparevalidator
(and other stuff not applicable to this post). Right now, it does a
simple DataTypeCheck or any comparison to the ValueToCompare property.
I've exposed the ValueToCompare and the CompareOperator properties.
The control is for a date, so the Type property is permanently set as
Date.

I'd like to expose the ControlToCompare property, but it won't work
because I'll always get the "Cannot find the control referenced by the
ControlToCompare property (paraphrased)". I'm assuming this is because
the two compared controls are in different INamingContainers.

Has anybody found a workaround? I'd like for my custom controls to be
able to be compared against each other. My short term workaround is
allowing for the internal compare operator to be disabled, and then
just using new comparevalidators on the page between the two controls.

Also, when setting the ValidationCompare attribute in my custom
control, this control id is shown in the dropdown for another's
ControlToCompare property. Unfortunately, this is the id of the top
level <span> container and not the textbox within the
compositecontrol. I thought that was the problem, but even after
exposing the textbox ClientId and using that as the ControlToCompare,
it still didn't work.

Thanks,

Jason

 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      06-13-2007
It should be if you assign UniqueID to the ControlToValidate property. As
validator uses FindControl to locate the control to be validated, it can
find it on other naming containers if the given id is unique id (exposing
the full containment hierarchy of the control)

Assuming I have a user control, WebUserConntrol1.ascx and it's code-behind

<%@ Control Language="vb" AutoEventWireup="false"
CodeBehind="WebUserControl1.ascx.vb"
Inherits="CSTestApplication1.WebUserControl1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Public Partial Class WebUserControl1
Inherits System.Web.UI.UserControl

Public ReadOnly Property TheBox() As TextBox
Get
Return TextBox1
End Get
End Property

End Class

And using it on aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb"
Inherits="CSTestApplication1.WebForm1" %>
<%@ Register Src="WebUserControl1.ascx" TagName="WebUserControl1"
TagPrefix="uc1" %>

<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<uc1:WebUserControl1 ID="UC1" runat="server" />
</div>
</form>
</body>
</html>

And relevant code to set the UNiqueID

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Me.RequiredFieldValidator1.ControlToValidate =
Me.UC1.TheBox.UniqueID
End Sub


--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net

"daokfella" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) ups.com...
>I have a composite control that contains a texbox and comparevalidator
> (and other stuff not applicable to this post). Right now, it does a
> simple DataTypeCheck or any comparison to the ValueToCompare property.
> I've exposed the ValueToCompare and the CompareOperator properties.
> The control is for a date, so the Type property is permanently set as
> Date.
>
> I'd like to expose the ControlToCompare property, but it won't work
> because I'll always get the "Cannot find the control referenced by the
> ControlToCompare property (paraphrased)". I'm assuming this is because
> the two compared controls are in different INamingContainers.
>
> Has anybody found a workaround? I'd like for my custom controls to be
> able to be compared against each other. My short term workaround is
> allowing for the internal compare operator to be disabled, and then
> just using new comparevalidators on the page between the two controls.
>
> Also, when setting the ValidationCompare attribute in my custom
> control, this control id is shown in the dropdown for another's
> ControlToCompare property. Unfortunately, this is the id of the top
> level <span> container and not the textbox within the
> compositecontrol. I thought that was the problem, but even after
> exposing the textbox ClientId and using that as the ControlToCompare,
> it still didn't work.
>
> Thanks,
>
> Jason
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
testsuite to validate POD argument passing between C and C++ kamalpr@gmail.com C++ 4 01-05-2009 04:47 AM
Is it possible to client-side validate a calendar? Tony Girgenti ASP .Net 6 03-28-2007 05:23 PM
Possible to validate XML against a DTD using Java 5/JAXB/etc? techguy_chicago@yahoo.com Java 0 06-20-2006 12:37 AM
Validate between 2 textboxes light of mind. heavy of belly ASP .Net 5 06-03-2006 04:28 PM
XML + XSD: Is it possible to get all possible Values for an Element? Markus Java 1 11-22-2005 02:51 PM



Advertisments