Controlli di validazione in custom list form

Cari site builder in ascolto, vi è mai capitato di ricevere richieste di poter inserire controlli per la validazione dei dati inseriti in una lista SharePoint? Forse la domanda giusta sarebbe stata “quante volte”…

Inserire controlli di validazione è molto più semplice di quanto possiate immaginare, anche se bisogna tenere in considerazione un paio di aspetti. Ma andiamo per ordine, nelle prossime righe andremo a creare una custom list form nella quale verificheremo la correttezza (formale) di un indirizzo e-mail inserito dall’utente. Tralascio le azioni preliminari di creazione e configurazione della lista, che chiamerò ValidationControls, sapete come si fa vero?🙂

Da SharePoint Designer apro il file NewItem.aspx relativo alla mia lista (in un progetto reale difficilmente aprirei e apporterei modifiche direttamente a questo file, chiudete un occhio se potete). Una volta nascosta la form originale (selezionando “Hidden” dalle proprietà della web part), inserisco una nuova custom list form selezionando la lista, il content type e il tipo di azione da supportare (in questo esempio non mi preoccuperò della magagna Attachment, chiudete l’altro occhio, ok?). Dal menù “Task Panes” di SPD seleziono “Toolbox” che mi farà apparire la lista di tutti i controlli disponibili per il mio sito, tra cui anche i controlli di validazione. Tra quelli disponibili aggiungerò alla mia custom list form un controllo di tipo “RegularExpressionValidator” che mi permetterà di sfruttare la grande flessibilità delle regular expressions.

 

A questo punto possiamo fare una prima prova (che fallirà tanto quanto la traversata del Titanic), inserire un controllo di validazione e legarlo manualmente ad un form field esistente. Nel tag <asp:regularexpressionvalidator … /> aggiungo manualmente la proprietà ControlToValidate ed inserisco come valore l’id del form field relativo alla colonna CustomerEmail. Riusltato: un errore che a seconda della configurazione del vostro web.config potrebbe apparire circa così:

Per fare in modo che il controllo di validazione non causi danni dovrò modificare il tipo di campo di input a cui lo voglio legare, trasformando il form field in Text Field. Per fare questo espando il menù “Common FormField Actions” e seleziono da “Format as” > “Text Box”.

A questo punto riconfiguro il controllo di validazione in modo che sia legato al nuovo campo di testo. Alcuni dei parametri più importanti sono ControlToValidate (permette di specificare quale campo di input debba essere validato), ErrorMessage (permette di specificare il messaggio di errore) e a mio parere anche Display (permette di specificare l’ingombro del controllo quando non visualizzato). Abbiamo inoltre la possibilità di impostare svariati parametri legati all’aspetto del messaggio che al momento tralascio.

Faccio un discorso a parte per il parametro “ValidationExpression”. Questa impostazione servirà per specificare il tipo di controllo da effettuare e nello specifico la regual expression che deve essere verificata. SPD ci viene incontro fornendoci un limitato numero di controlli preconfigurati, tra i quali (ma guarda un po’) anche il controllo sul formato dell’indirizzo e-mail.

Una volta salvata la pagina, provando ad inserire un dato diverso da un indirizzo e-mail otterremo il messaggio di errore configurato.

In questo esempio ho utilizzato un controllo di tipo RegularExpressionValidator in quanto abbiamo già a disposizione un pattern di verifica accettabile. Nel caso di controlli personalizzati (ad esempio lunghezza minima e massima di una stringa) all’interno di una custom list form non potremo usare una RegEx, a causa di caratteri “speciali” riservati ad XSL come ad esempio le parentesi graffe. Un modo per aggirare l’ostacolo può essere quello di utilizzare il controllo CustomValidator che ci permette di specificare una funzione JS che si occupi per noi di tutte le verifiche necessarie e, in questo caso, il solo limite è la fantasia di chi ci commissiona i progetti😀

– Riccardo


3 commenti on “Controlli di validazione in custom list form”

  1. Daniele scrive:

    Ops, dopo aver chiuso il secondo occhio non sono più riuscito a leggere🙂

    Complimenti Riccardo. In un prossimo post potresti parlarci della “magagna Attachment”, che mi è sfuggita?

    • Riccardo scrive:

      Ciao Daniele, grazie mille🙂 D’accordo, aggiungo il post sugli attachment nella lista dei “to do”, subito dopo “Partecipare ad un Iron man”, chissà cosa farò prima…😀


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...