RequiredFieldValidator su texbox e checkbox

mercoledì 07 gennaio 2009 - 17.35

volperubbia Profilo | Senior Member

Ciao a tutti,
ho un RequiredFieldValidator associato a una Texbox, ma vorrei farlo scattare solo se
una CheckBox viene ceccata. Ad esempio:

<ASP:TextBox ID="txt" runat="server"></ASP:TextBox>
<ASP:RequiredFieldValidator ID="rfv" RUNAT="server" ERRORMESSAGE="*" CONTROLTOVALIDATE="txt"
DISPLAY="Dynamic" ENABLEVIEWSTATE="False"></ASP:RequiredFieldValidator>
<ASP:CheckBox ID="chkTxt" runat="server" />

Potrei usare l'evento server chkTxt_CheckedChanged e rendere la TextBox disabilitata,
in questo modo la validazione non scatta.
Esiste un'altra soluzione più leggera e lato "client"? Magari usando un CustomValidator o un ValidationSummary ...

Grazie, Davide

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

>Esiste un'altra soluzione più leggera e lato "client"? Magari
>usando un CustomValidator o un ValidationSummary ...
Con il customValidator puoi introdurre le logiche che più ritieni opportune, comprese quelle che controllano gli eventuali campi della tua form. Questo ti evita roundtrip a server, anche se, se la pagina non è pesante, puoi comunque pensare di tornare a server (magari anche con controlli AJAX, vedi UpdatePanel).

Per il CustomValidator leggi qui:
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx

per l'UpdatePanel qui:
http://msdn.microsoft.com/it-it/library/bb386454.aspx

e qui:
http://www.codegod.de/webappcodegod/updatepanel-tutorial-aspnet-ajax-AID281.aspx

>Grazie, Davide
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

volperubbia Profilo | Senior Member

Le sai sempre tutte ... grazie.
Ecco il risultato finale:

<ASP:TEXTBOX ID="txtProva" RUNAT="server"></ASP:TEXTBOX>
<ASP:CHECKBOX ID="chkProva" RUNAT="server" />
<ASP:CUSTOMVALIDATOR ID="cvProva" RUNAT="server" ERRORMESSAGE="*"
DISPLAY="Dynamic" ENABLEVIEWSTATE="False" CLIENTVALIDATIONFUNCTION="ClientValidate">
</ASP:CUSTOMVALIDATOR>

<script language="javascript">
<!--
function ClientValidate(source, arguments)
{
var chk = document.getElementById('<%=Me.chkProva.ClientID%>') ;
var txt = document.getElementById('<%=Me.txtProva.ClientID%>') ;
if (chk == null || txt == null)
arguments.IsValid = true ;
else {
arguments.IsValid = (chk.checked == false) || ((chk.checked == true) && ('' != txt.value.replace(/\s+$|^\s+/g,''))) ;
}
}
// -->
</script>

Ciao!

alx_81 Profilo | Guru

>Le sai sempre tutte ... grazie.
magari, quindi funziona, mi sembra di aver capito..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5