By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,836 Members | 2,023 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,836 IT Pros & Developers. It's quick & easy.

Client validation not working with XML data islands in tables

P: n/a

I have a table which is bound to an Internet Explorer XML
data island. I'm using ASP.NET's client-side validators
for an input field in the table. The problem is that if
the input fields are in a table that is bound to the
island (such that the rows are dynamically generated by IE
from the XML data island), the validators do not work. If
the table is not bound, the validators do work, but then I
don't have the table iterating through all the elements in
my xml island.

If I hard-code a Javascript onchange event into each form
field and then write a custom javascript function, I might
be able to manually invoke the validators. But then I need
to figure out how to manually call the ASP.NET front-end
validators. I'd prefer to stick to "pure" ASP.NET
validation and have it work w/ IE XML data island bound
table if at all possible.

BTW, I realize that I could bind the XML on the server-
side using ASP.NET's data-binding methods. The advantage
to using the client-side IE XML data islands is that I can
keep all of the data in an XML format from the front-end
all the way to my XML-compatile ORacle 9i database on the
back-end, which reduces the amount and complexity of code
that needs to be written.

Any suggestions?

Here is the generated code for my table:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"> <HTML> <HEAD>
<TITLE>Patient Visits</TITLE>
</HEAD>
<BODY>
<H1>Patient Visits</H1>
<XML ID="VisitsDSO">
<visits>
<visit>
<number>1</number>
<height>111</height>
<weight>100</weight>
<date>1999-01-01</date>
</visit>
<visit>
<number>2</number>
<height>222</height>
<weight>200</weight>
<date>2000-01-01</date>
</visit>
<visit>
<number>3</number>
<height>333</height>
<weight>300</weight>
<date>2001-01-01</date>
</visit>
<visit>
<number>4</number>
<height>444</height>
<weight>400</weight>
<date>2002-01-01</date>
</visit>
<visit>
<number>5</number>
<height>555</height>
<weight>500</weight>
<date>2003-01-01</date>
</visit>
</visits>
</xml>
<form name="_ctl0" method="post"
action="PatientVisits.aspx" language="javascript"
onsubmit="ValidatorOnSubmit();" id="_ctl0"> <input
type="hidden" name="__VIEWSTATE"
value="dDwtNDg3NzIxNjA3Ozs+LcqNO2ytHf6sg9tZGopQzt1 vegQ=" />

<script language="javascript"
src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"
</script>

<TABLE datasrc="#VisitsDSO" BORDER="1">
<THEAD>
<TR>
<TH>
Visit</TH>
<TH>
Date</TH>
<TH>
Height</TH>
<TH>
Height</TH>
<TH>
Weight</TH>
</TR>
</THEAD>
<TR>
<TD VALIGN="top">
<SPAN DATAFLD="number"></SPAN>
</TD>
<TD VALIGN="top"><input name="TextBox2" id="TextBox2"
type="text" datafld="Date" />
<span id="Requiredfieldvalidator4"
controltovalidate="TextBox2" errormessage="<br>Empty
Field" display="Dynamic"
evaluationfunction="RequiredFieldValidatorEvaluate IsValid"
initialvalue="" style="color:Red;display:none;"><br>Empty
Field</span>
<span id="Comparevalidator1"
controltovalidate="TextBox2" errormessage="<br>Please
enter a whole number greater than or equal to 12345."
type="Integer"
evaluationfunction="CompareValidatorEvaluateIsVali d"
valuetocompare="12345" operator="GreaterThanEqual"
style="color:Red;visibility:hidden;"><br>Please enter a
whole number greater than or equal to 12345.</span>
</td>
</TR>
</TABLE>
<script language="javascript">
<!--
var Page_Validators = new Array(document.all
["Requiredfieldvalidator1"],
document.all["Comparevalidator2"],
document.all["Requiredfieldvalidator4"],
document.all["Comparevalidator1"]);
// -->
</script>
<script language="javascript">
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" &&
clientInformation.appName.indexOf("Explorer") != -1) {
if (typeof(Page_ValidationVer) == "undefined")
alert("Unable to find script
library '/aspnet_client/system_web/1_1_4322/WebUIValidation
..js'. Try placing this file manually, or reinstall by
running 'aspnet_regiis -c'.");
else if (Page_ValidationVer != "125")
alert("This page uses an incorrect version of
WebUIValidation.js. The page expects version 125. The
script library is " + Page_ValidationVer + ".");
else
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
ValidatorCommonOnSubmit();
}
}
// -->
</script>
</form>
</BODY>
</HTML>

----------------------------------------
Here is a simplified version of the aspx page:

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="PatientVisits.aspx.vb"
Inherits="App1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<!--#include virtual="FormData.asp"-->
<form runat="server">

<!-- binding works here, AND
validation does also. -->
<asp:DropDownList
id="Dropdownlist1" datasrc="#VisitsDSO" datafld="Weight"
runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem
Value="100">100</asp:ListItem>
<asp:ListItem
Value="200">200</asp:ListItem>
<asp:ListItem
Value="300">300</asp:ListItem>
<asp:ListItem
Value="400">400</asp:ListItem>
<asp:ListItem
Value="500">500</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator
id="Requiredfieldvalidator3" runat="server"
ControlToValidate="Dropdownlist1" ErrorMessage="<br>Empty
Field"

Display="Dynamic"></asp:RequiredFieldValidator>
<br>

<TABLE BORDER="1"
datasrc="#VisitsDSO">
<THEAD>
<TR>

<TH>
Weight</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD
VALIGN="top">
<!--
binding works here, but validation does not. -->

<asp:DropDownList id="SelectWeight"
datafld="Weight" runat="server">

<asp:ListItem></asp:ListItem>

<asp:ListItem Value=100>100</asp:ListItem>

<asp:ListItem Value=200>200</asp:ListItem>

<asp:ListItem Value=300>300</asp:ListItem>

<asp:ListItem Value=400>400</asp:ListItem>

<asp:ListItem Value=500>500</asp:ListItem>

</asp:DropDownList>

<asp:RequiredFieldValidator
id="Requiredfieldvalidator2" runat="server"
ControlToValidate="SelectWeight"

ErrorMessage="<br>Empty Field -- Came from Table"

Display="Dynamic"></asp:RequiredFieldValidator>

</TD>
</TR>
</TBODY>
</TABLE>

</form>

</BODY>
</HTML>

Nov 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
asp.net validation works by adding a custom attribute to each element that
needs validation. then when validation is done, the validation routine scans
all elements looking for this attribute, whose value indicates the
validation routine to call. You just need to add the attribute yourself.
-- bruce (sqlwork.com)


"Dnna" <an*******@discussions.microsoft.com> wrote in message
news:02****************************@phx.gbl...

I have a table which is bound to an Internet Explorer XML
data island. I'm using ASP.NET's client-side validators
for an input field in the table. The problem is that if
the input fields are in a table that is bound to the
island (such that the rows are dynamically generated by IE
from the XML data island), the validators do not work. If
the table is not bound, the validators do work, but then I
don't have the table iterating through all the elements in
my xml island.

If I hard-code a Javascript onchange event into each form
field and then write a custom javascript function, I might
be able to manually invoke the validators. But then I need
to figure out how to manually call the ASP.NET front-end
validators. I'd prefer to stick to "pure" ASP.NET
validation and have it work w/ IE XML data island bound
table if at all possible.

BTW, I realize that I could bind the XML on the server-
side using ASP.NET's data-binding methods. The advantage
to using the client-side IE XML data islands is that I can
keep all of the data in an XML format from the front-end
all the way to my XML-compatile ORacle 9i database on the
back-end, which reduces the amount and complexity of code
that needs to be written.

Any suggestions?

Here is the generated code for my table:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"> <HTML> <HEAD>
<TITLE>Patient Visits</TITLE>
</HEAD>
<BODY>
<H1>Patient Visits</H1>
<XML ID="VisitsDSO">
<visits>
<visit>
<number>1</number>
<height>111</height>
<weight>100</weight>
<date>1999-01-01</date>
</visit>
<visit>
<number>2</number>
<height>222</height>
<weight>200</weight>
<date>2000-01-01</date>
</visit>
<visit>
<number>3</number>
<height>333</height>
<weight>300</weight>
<date>2001-01-01</date>
</visit>
<visit>
<number>4</number>
<height>444</height>
<weight>400</weight>
<date>2002-01-01</date>
</visit>
<visit>
<number>5</number>
<height>555</height>
<weight>500</weight>
<date>2003-01-01</date>
</visit>
</visits>
</xml>
<form name="_ctl0" method="post"
action="PatientVisits.aspx" language="javascript"
onsubmit="ValidatorOnSubmit();" id="_ctl0"> <input
type="hidden" name="__VIEWSTATE"
value="dDwtNDg3NzIxNjA3Ozs+LcqNO2ytHf6sg9tZGopQzt1 vegQ=" />

<script language="javascript"
src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"
</script>

<TABLE datasrc="#VisitsDSO" BORDER="1">
<THEAD>
<TR>
<TH>
Visit</TH>
<TH>
Date</TH>
<TH>
Height</TH>
<TH>
Height</TH>
<TH>
Weight</TH>
</TR>
</THEAD>
<TR>
<TD VALIGN="top">
<SPAN DATAFLD="number"></SPAN>
</TD>
<TD VALIGN="top"><input name="TextBox2" id="TextBox2"
type="text" datafld="Date" />
<span id="Requiredfieldvalidator4"
controltovalidate="TextBox2" errormessage="<br>Empty
Field" display="Dynamic"
evaluationfunction="RequiredFieldValidatorEvaluate IsValid"
initialvalue="" style="color:Red;display:none;"><br>Empty
Field</span>
<span id="Comparevalidator1"
controltovalidate="TextBox2" errormessage="<br>Please
enter a whole number greater than or equal to 12345."
type="Integer"
evaluationfunction="CompareValidatorEvaluateIsVali d"
valuetocompare="12345" operator="GreaterThanEqual"
style="color:Red;visibility:hidden;"><br>Please enter a
whole number greater than or equal to 12345.</span>
</td>
</TR>
</TABLE>
<script language="javascript">
<!--
var Page_Validators = new Array(document.all
["Requiredfieldvalidator1"],
document.all["Comparevalidator2"],
document.all["Requiredfieldvalidator4"],
document.all["Comparevalidator1"]);
// -->
</script>
<script language="javascript">
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" &&
clientInformation.appName.indexOf("Explorer") != -1) {
if (typeof(Page_ValidationVer) == "undefined")
alert("Unable to find script
library '/aspnet_client/system_web/1_1_4322/WebUIValidation
.js'. Try placing this file manually, or reinstall by
running 'aspnet_regiis -c'.");
else if (Page_ValidationVer != "125")
alert("This page uses an incorrect version of
WebUIValidation.js. The page expects version 125. The
script library is " + Page_ValidationVer + ".");
else
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
ValidatorCommonOnSubmit();
}
}
// -->
</script>
</form>
</BODY>
</HTML>

----------------------------------------
Here is a simplified version of the aspx page:

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="PatientVisits.aspx.vb"
Inherits="App1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<!--#include virtual="FormData.asp"-->
<form runat="server">

<!-- binding works here, AND
validation does also. -->
<asp:DropDownList
id="Dropdownlist1" datasrc="#VisitsDSO" datafld="Weight"
runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem
Value="100">100</asp:ListItem>
<asp:ListItem
Value="200">200</asp:ListItem>
<asp:ListItem
Value="300">300</asp:ListItem>
<asp:ListItem
Value="400">400</asp:ListItem>
<asp:ListItem
Value="500">500</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator
id="Requiredfieldvalidator3" runat="server"
ControlToValidate="Dropdownlist1" ErrorMessage="<br>Empty
Field"

Display="Dynamic"></asp:RequiredFieldValidator>
<br>

<TABLE BORDER="1"
datasrc="#VisitsDSO">
<THEAD>
<TR>

<TH>
Weight</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD
VALIGN="top">
<!--
binding works here, but validation does not. -->

<asp:DropDownList id="SelectWeight"
datafld="Weight" runat="server">

<asp:ListItem></asp:ListItem>

<asp:ListItem Value=100>100</asp:ListItem>

<asp:ListItem Value=200>200</asp:ListItem>

<asp:ListItem Value=300>300</asp:ListItem>

<asp:ListItem Value=400>400</asp:ListItem>

<asp:ListItem Value=500>500</asp:ListItem>

</asp:DropDownList>

<asp:RequiredFieldValidator
id="Requiredfieldvalidator2" runat="server"
ControlToValidate="SelectWeight"

ErrorMessage="<br>Empty Field -- Came from Table"

Display="Dynamic"></asp:RequiredFieldValidator>

</TD>
</TR>
</TBODY>
</TABLE>

</form>

</BODY>
</HTML>

Nov 18 '05 #2

P: n/a
Thanks for your help. I have a question about the exact
syntax to use. My table ends up with four rows, but the
aspx source just looks like this for textbox:
<input type="text" name="TextBox2" id="TextBox2"
DATAFLD="Date" runat="server">

and like this for dropdown:
<asp:DropDownList id="SelectWeight" DATAFLD="Weight"
runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem Value="100">100</asp:ListItem>
<asp:ListItem Value="200">200</asp:ListItem>
<asp:ListItem Value="300">300</asp:ListItem>
</asp:DropDownList>

Where should I add the custom attribute? And are there any
syntax or value rules?

Thanks again! I really appreciate the help.
-- Dnna

-----Original Message-----
asp.net validation works by adding a custom attribute to each element thatneeds validation. then when validation is done, the validation routine scansall elements looking for this attribute, whose value indicates thevalidation routine to call. You just need to add the attribute yourself.

-- bruce (sqlwork.com)


"Dnna" <an*******@discussions.microsoft.com> wrote in messagenews:02****************************@phx.gbl...

I have a table which is bound to an Internet Explorer XML
data island. I'm using ASP.NET's client-side validators
for an input field in the table. The problem is that if
the input fields are in a table that is bound to the
island (such that the rows are dynamically generated by IE from the XML data island), the validators do not work. If the table is not bound, the validators do work, but then I don't have the table iterating through all the elements in my xml island.

If I hard-code a Javascript onchange event into each form field and then write a custom javascript function, I might be able to manually invoke the validators. But then I need to figure out how to manually call the ASP.NET front-end
validators. I'd prefer to stick to "pure" ASP.NET
validation and have it work w/ IE XML data island bound
table if at all possible.

BTW, I realize that I could bind the XML on the server-
side using ASP.NET's data-binding methods. The advantage
to using the client-side IE XML data islands is that I can keep all of the data in an XML format from the front-end
all the way to my XML-compatile ORacle 9i database on the back-end, which reduces the amount and complexity of code that needs to be written.

Any suggestions?

Here is the generated code for my table:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"> <HTML> <HEAD>
<TITLE>Patient Visits</TITLE>
</HEAD>
<BODY>
<H1>Patient Visits</H1>
<XML ID="VisitsDSO">
<visits>
<visit>
<number>1</number>
<height>111</height>
<weight>100</weight>
<date>1999-01-01</date>
</visit>
<visit>
<number>2</number>
<height>222</height>
<weight>200</weight>
<date>2000-01-01</date>
</visit>
<visit>
<number>3</number>
<height>333</height>
<weight>300</weight>
<date>2001-01-01</date>
</visit>
<visit>
<number>4</number>
<height>444</height>
<weight>400</weight>
<date>2002-01-01</date>
</visit>
<visit>
<number>5</number>
<height>555</height>
<weight>500</weight>
<date>2003-01-01</date>
</visit>
</visits>
</xml>
<form name="_ctl0" method="post"
action="PatientVisits.aspx" language="javascript"
onsubmit="ValidatorOnSubmit();" id="_ctl0"> <input
type="hidden" name="__VIEWSTATE"
value="dDwtNDg3NzIxNjA3Ozs+LcqNO2ytHf6sg9tZGopQzt1 vegQ=" />
<script language="javascript"
src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"
></script>

<TABLE datasrc="#VisitsDSO" BORDER="1">
<THEAD>
<TR>
<TH>
Visit</TH>
<TH>
Date</TH>
<TH>
Height</TH>
<TH>
Height</TH>
<TH>
Weight</TH>
</TR>
</THEAD>
<TR>
<TD VALIGN="top">
<SPAN DATAFLD="number"></SPAN>
</TD>
<TD VALIGN="top"><input name="TextBox2"

id="TextBox2" type="text" datafld="Date" />
<span id="Requiredfieldvalidator4"
controltovalidate="TextBox2" errormessage="<br>Empty
Field" display="Dynamic"
evaluationfunction="RequiredFieldValidatorEvaluate IsValid" initialvalue="" style="color:Red;display:none;"><br>Empty Field</span>
<span id="Comparevalidator1"
controltovalidate="TextBox2" errormessage="<br>Please
enter a whole number greater than or equal to 12345."
type="Integer"
evaluationfunction="CompareValidatorEvaluateIsVali d"
valuetocompare="12345" operator="GreaterThanEqual"
style="color:Red;visibility:hidden;"><br>Please enter a
whole number greater than or equal to 12345.</span>
</td>
</TR>
</TABLE>
<script language="javascript">
<!--
var Page_Validators = new Array(document.all
["Requiredfieldvalidator1"],
document.all["Comparevalidator2"],
document.all["Requiredfieldvalidator4"],
document.all["Comparevalidator1"]);
// -->
</script>
<script language="javascript">
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" &&
clientInformation.appName.indexOf("Explorer") != -1) {
if (typeof(Page_ValidationVer) == "undefined")
alert("Unable to find script
library '/aspnet_client/system_web/1_1_4322/WebUIValidation .js'. Try placing this file manually, or reinstall by
running 'aspnet_regiis -c'.");
else if (Page_ValidationVer != "125")
alert("This page uses an incorrect version of
WebUIValidation.js. The page expects version 125. The
script library is " + Page_ValidationVer + ".");
else
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
ValidatorCommonOnSubmit();
}
}
// -->
</script>
</form>
</BODY>
</HTML>

----------------------------------------
Here is a simplified version of the aspx page:

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="PatientVisits.aspx.vb"
Inherits="App1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<!--#include virtual="FormData.asp"-->
<form runat="server">

<!-- binding works here, AND
validation does also. -->
<asp:DropDownList
id="Dropdownlist1" datasrc="#VisitsDSO" datafld="Weight" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem
Value="100">100</asp:ListItem>
<asp:ListItem
Value="200">200</asp:ListItem>
<asp:ListItem
Value="300">300</asp:ListItem>
<asp:ListItem
Value="400">400</asp:ListItem>
<asp:ListItem
Value="500">500</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator
id="Requiredfieldvalidator3" runat="server"
ControlToValidate="Dropdownlist1" ErrorMessage="<br>Empty Field"

Display="Dynamic"></asp:RequiredFieldValidator>
<br>

<TABLE BORDER="1"
datasrc="#VisitsDSO">
<THEAD>
<TR>

<TH>
Weight</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD
VALIGN="top">
<!--
binding works here, but validation does not. -->

<asp:DropDownList id="SelectWeight"
datafld="Weight" runat="server">

<asp:ListItem></asp:ListItem>

<asp:ListItem Value=100>100</asp:ListItem>

<asp:ListItem Value=200>200</asp:ListItem>

<asp:ListItem Value=300>300</asp:ListItem>

<asp:ListItem Value=400>400</asp:ListItem>

<asp:ListItem Value=500>500</asp:ListItem>

</asp:DropDownList>

<asp:RequiredFieldValidator
id="Requiredfieldvalidator2" runat="server"
ControlToValidate="SelectWeight"

ErrorMessage="<br>Empty Field -- Came from Table"

Display="Dynamic"></asp:RequiredFieldValidator>

</TD>
</TR>
</TBODY>
</TABLE>

</form>

</BODY>
</HTML>

.

Nov 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.