Premessa
Il mio primo post su Visual Studio LightSwitch consegue alla scoperta dei formati telefonici, nella finestra delle proprietà di un campo di tipo PhoneNumber, e di un piccolo problema.

Introduzione
Quando si progetta una tabella, oltre ai 'soliti' tipi di campo, LightSwitch ci mette a disposizione anche i tipi 'business' EmailAddress, Money e PhoneNumber. Sono detti 'business' perché non sono tipi specifici di dati (come intero,
double, boolean, datetime, string, eccetera), ma sono specifici di applicazioni.

Il senso dell'introduzione di questi nuovi elementi sta nella volontà di fornire una validazione automatica a determinati tipi comuni di dato. Non è più necessario scrivere codice per regolare l'immissione e/o validare un indirizzo email, un importo, un recapito telefonico.

E' abbastanza intuitivo che EmailAddress è un tipo string che pretende, per essere ritenuto valido, la presenza della chiocciola e delle parti che permettono di riconoscere la casella. Altrettanto intuitivo è impostare (caso mai non fosse già impostato da LightSwitch secondo le impostazioni internazionali del pc su cui viene installato) il formato del tipo Money.

Per i formati dei numeri telefonici, invece, LightSwitch fornisce una lista di formati accessibile dalla finestra delle proprietà di un campo di tipo PhoneNumber (un link "Phone Number Formats" sotto "Appearance").

Questa lista elenca i formati possibili e accettabili per il dato 'numero telefonico' in ordine di priorità: Quando viene immesso un numero telefonico, esso viene confrontato con gli elementi di questa lista e, se conforme a un
formato accettabile, viene mostrato secondo il primo formato della stessa classe.

Purtroppo, però, LightSwitch (sto parlando della versione Beta1) fornisce solo i formati statunitensi. A esempio:

  1. C (AAA) NNN-NNNN
  2. C (AAA) NNNNNNN
  3. CAAANNNNNNN
  4. (AAA) NNN-NNNN
  5. (AAA) NNNNNNN
  6. AAANNNNNNN
  7. NNN-NNNN
  8. NNNNNNN

Però è possibile modificare e aggiungere i propri formati. Il che era proprio quanto mi accingevo a fare, mentre preparavo (si fa per dire) la prima tabella del mio primo progetto LightSwitch.

Il problema
Anche se si comprende rapidamente (grazie all'Help) che C sta per Country, A per Area e N per cifra, non è altrettanto immediato comprendere il meccanismo, e la guida non è (al momento) sufficientemente chiara. Di conseguenza, i miei
tentativi di impostare formati accettabili in Italia (e in Europa) fallivano uno dopo l'altro.

Finché, tenta e ritenta, ho capito il meccanismo, che ho già formulato sopra, ma che ripeto, per poterlo spiegare meglio:

Quando viene immesso un numero telefonico, esso viene confrontato con gli elementi di questa lista e, se conforme a un formato accettabile, viene mostrato secondo il primo formato della stessa classe.

Poiché sembra un oscuro gioco di parole, lo illustrerò con un esempio:
immaginiamo di scrivere

39045558419

Cioè un numero di undici cifre. Esso viene confrontato con il formato numero 1 (della lista mostrata qui sopra) che contempla proprio undici elementi C o A o N) e viene ritenuto NON valido, poi con il formato numero 2, ancora NON valido, infine con il formato numero 3, in base al quale viene reso valido, quindi verrà mostrato secondo il primo formato di questi tre (che formano una classe).

3 (904) 555-8419

Supponiamo adesso di immettere un numero con le parentesi:

3(904)5558419

Esso viene validato dal formato numero 2 e visualizzato, ancora, come indicato nel formato numero 1.

Infatti, i formati 1, 2 e 3 sono della stessa classe, sono cioè costituiti da dieci elementi C o A o N. Si differenziano per i caratteri accessori, cioè parentesi, spazi e trattini. Quindi ciascuno di essi può validare una immissione di dati che collimi col numero degli elementi e/o con il numero e la posizione dei caratteri accessori. In base all'ordine di priorità, per la visualizzazione viene usato il primo formato tra quelli della stessa classe, cioè il formato numero 1.

I formati europei
Capito il meccanismo, non mi è restato altro da fare che impostare con pazienza i formati (per me) accettabili e possibili:

  1. AAA NNNNNNN
  2. AAANNNNNNN
  3. AAA NNNNNN
  4. AAANNNNNN
  5. +CC AAA NNNNNNN
  6. +CCAAANNNNNNN
  7. +CC AAA NNNNNN
  8. +CCAAANNNNNN

Conclusione
Spero che questo mio primo post sia utile nella comprensione di una caratteristica facilitazione tra le tante offerte da LightSwitch: l'impostazione della lista di formati accettabili per l'immissione (e la visualizzazione) di numeri telefonici.