Validazione a runtime

giovedì 17 aprile 2008 - 10.53

allevaldo Profilo | Junior Member

ho una serie di controlli che vengono inseriti dinamicamente nella pagina durante l'onload.
vorrei associare dei controlli di validazione ad ognuno di essi... ma giustamente non posso sapere prima quanti e quali saranno...

si possono aggiungere dei validator a runtime???

Wamba Profilo | Expert

Puoi sfruttare il validation group o creare anche i validatori a runtime.
Se hai bisogno di riferimenti dimmelo che ti do una mano.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

allevaldo Profilo | Junior Member

sì che mi servono...

anche perchè aggiungo il validator così

RegularExpressionValidator reg = new RegularExpressionValidator();
reg.ID = num + "_numAttValidator";
reg.ErrorMessage = " ! ";
reg.EnableClientScript = true;
reg.ControlToValidate = num + "_numAtt";
reg.Enabled = true;
reg.SetFocusOnError = true;
reg.ValidationExpression = @"[0-9]+";
this.Validators.Add(reg);

numAttivita.Controls.Add(reg);

lo aggiungo così alla pagina... ma in debug mi dice che la collection di validators della pagina ha count = 0 e quindi il page.isvalid è sempre true

Wamba Profilo | Expert

Validation group un'introduzione: http://msdn2.microsoft.com/en-us/library/ms227424.aspx

Aggiunta dinamica validator: in che momento del ciclo di vita della pagina fai l'inserimento del validatore? c'è un if(!IsPostBack)?.

Personalmente trovo più valida la prima soluzione, perchè l'aggiunta dinamica di controlli aggiunge un grado di complessità alla pagina notevole.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

allevaldo Profilo | Junior Member

devo per forza aggiungerli dinamicamente perchè non so a priori quanti e quali controlli ci saranno sul form... e soprattutto non ne conosco l'id a priori

li aggiungo nel load della pagina... all'interno dell'if (!page.ispostback)

Wamba Profilo | Expert

Allora il problema è spiegato.
Il guaio è che il view state mantiene in memoria lo stato dei controlli, ma non l'albero dei controlli. In altre parole, quando crei dei controlli dinamici devi ricrearli ad ogni postback.
I controlli dinamici non sono un argomento semplice. Ti consiglio un link:http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_.aspx
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

allevaldo Profilo | Junior Member

non ho capito nulla...

cioè al postback della pagina perde tutti i controlli?

Wamba Profilo | Expert

Versione facile: Quelli creati a runtime si.
Versione complessa: Tutti i controlli vengono persi, la pagina ed alcuni controlli (es:repeater) reinstanziano in automatico i controlli figlio, tutti gli altri devi occuparti personalmente di ricrearli.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
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