<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>IProgrammatori.it - Articoli</title>
<link>http://www.iprogrammatori.it</link>
<description>Articoli di programmazione e web-marketing</description>
<language>it-IT</language>
<copyright>Copyright 2001-2010 IProgrammatori.it</copyright>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<image>
<url>http://www.iprogrammatori.it/images/logo_feed.gif</url>
<title>IProgrammatori.it - il portale dei programmatori italiani</title>
<link>http://www.iprogrammatori.it</link>
<width>156</width>
<height>41</height>
</image>
<item>
<title>Recensione libro: Windows Powershell 2.0 Guida completa</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-windows-powershell-20-g_946.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>12/07/2010 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp; Scheda del libro:
<table id="table1" border="1" width="30%">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">COBISI EFRAN</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>Euro 32</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 448 pag - 17x24 bn</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>2010</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>9788882338930</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiana</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>digital lifestyle pro</td>
        </tr>
    </tbody>
</table>
<p>Il libro windows PowerShell 2.0 guida completo <a href="http://www.fag.it/scheda.aspx?ID=37412">http://www.fag.it/scheda.aspx?ID=37412</a> edito della casa editrice FAG <a href="http://www.fag.it/">http://www.fag.it</a> &egrave; un ottimo manuale per tutti coloro che sono interessati ad utilizzare questo strumento. Affronta in modo chiaro tutti i vari aspetti sia dell'ambiente shell e sia del linguggio.</p>
<p>Questa guida fornisce al lettore le conoscenze adeguate per lavorare in completa autonomia e con dimestichezza con questa tecnologia.</p>
<p>Efran Cobisi, &egrave; autore di diversi articoli, &egrave; il fondatore della prima community su questa tecnologia. La sua community &egrave; visibile al seguente indirizzo web <a href="http://www.powershell.it/">www.powershell.it</a>&nbsp; dove con i suoi contenuti come articoli, trucchi, notizie e forum, permettono agli utenti di trovare valide soluzione alle problematiche di PowerShell.</p>
<p>&nbsp;</p>
<p>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo libro.</p>
<p class="MsoNormal">Nel primo capitolo viene illustrata l&rsquo;installazione di questo sistema, illustrando passo per passo per installare e configurare al meglio PowerShell. Nella parte finale del capitolo viene fatta una panoramica delle finestre.</p>
<p class="MsoNormal">Nel secondo capitolo, si conclude la prima parte del libro, in questo capitolo viene illustrato al lettore l&rsquo;utilizzo del prompt dei comandi e vengono illustrati alcuni semplici esempi, molto utili per chi si avvicina per la prima volta a questa tecnologia. Per coloro che hanno un minimo di pratica, i primi due capitoli si possono saltare.</p>
<p class="MsoNormal">Con il terzo capitolo, si passa alla seconda parte del libro. Dopo una breve ed utile introduzione sul significato degli oggetti, l&rsquo;autore del libro, fornisce interessanti esempi di codice di vario genere, come le variabili, il recuper dei valori da console, i vari tipi di variabile, il casting ed altro ancora.</p>
<p class="MsoNormal">Nel quarto capitolo, viene illustrato la gestione da console dei script, come possiamo gestire gli script da noi creati o da altri.</p>
<p class="MsoNormal">Il capitolo 5, contiene numerose tabelle riassuntive oltre ad ottime indicazioni sulla gestione degli alias. In questo capitolo, vedremo come utilizzarli. Un capitolo molto breve, che fornisce delle valide basi.</p>
<p class="MsoNormal">Il sesto capitolo riguarda tutta la parte inerente al codice, in questo capitolo vengono affrontati in maniera esauriente e chiara gli operatori di questo linguaggio. Operatori come like nolike, le, ge, ed altri ancora. Il capitolo contiene molti frammenti di codice, per far comprendere al lettore l&rsquo;utilizzo dei vari operatori messi a disposizione da PowerShell.</p>
<p class="MsoNormal">Il capitolo settimo, illustra altre parole chiavi, anche in questo capitolo si trovano molti esempi, permettendo al lettore di fare molto pratica. In questo capitolo vengono esaminate le parole chiavi del linguaggio, come if, switch e i cicli. Un capitolo molto interessante e pratico.</p>
<p class="MsoNormal">Nel capitolo 8, viene illustrato le pipeline, illustrando alcuni comandi che possono tornare utile nell&rsquo;utilizzo della shell.</p>
<p class="MsoNormal">Con il capitolo 9, si conclude la seconda parte del libro. Anche in questo capitolo, vengono illustrate alcune tecniche riguardante la shell di questa tecnologia. In particolare vedremo la gestione dell&rsquo;output .</p>
<p class="MsoNormal">Con il capitolo decimo, si passa alla terza parte del libro, in questo capitolo vedremo come utilizzare gli array. <span>&nbsp;</span>Il capitolo contiene diversi esempi di codice, che illustrano i vari utilizzi che possono capitare durante la scrittura di codice. Esempi riguardante i metodi (reverse, indexof, ecc) operatori ed altre tecniche interessanti.</p>
<p class="MsoNormal">Il capitolo 11, continua l&rsquo;argomento riguardante gli array. In questo capitolo vedremo l&rsquo;utilizzo di altri metodi, operatori e tecniche interessanti. I due capitoli completano la gestione degli array.</p>
<p class="MsoNormal">Il capitolo 12, riguarda le stringhe, in questo capitolo sono riportate interessante tecniche per la gestione del testo. Un capitolo che pu&ograve; tornare utile anche per coloro che gi&agrave; utilizzano il linguaggio. Nel capitolo si trovano interessanti esempi di codice, riguardante i metodi da utilizzare, la formattazione, ed altre interessanti tecniche che si possono fare sul testo.</p>
<p class="MsoNormal">Il capitolo 13, introduce il lettore per quanto riguarda le espressioni regolari, e wildcard.</p>
<p class="MsoNormal">Il capitolo 14 illustra l&rsquo;utilizzo di variabili di tipo numerico e le varie operazioni matematiche che si possono svolgere. Inoltre sono riportate alcune funzioni matematiche come next, pow, sqrt ed altri ancora per lavorare sui numeri. Un capitolo molto breve ed introduttivo che fornisce alcuni concetti di base in merito alle operazioni matematiche.</p>
<p class="MsoNormal">Nel capitolo 15, l&rsquo;autore del libro fornisce al lettore interessanti tecniche e trucchi per gestire le date. Il capitolo &egrave; tutto dedicato alle variabili di tipo data, con esempi molto pratici che tornano utile nel lavoro quotidiano. Tecniche come la gestione della formattazione della data, la gestione delle date, rilevare gli anni bisestili, ora solare, ora legale, ed altro ancora.</p>
<p class="MsoNormal">Il capitolo 16, conclude la terza parte di questo buon manuale. In questo capitolo vedremo la creazione di funzioni. Vengono illustrati i principi per la creazione di funzioni.</p>
<p class="MsoNormal">Con il capitolo diciassettesimo, si passa alla quarta e penultima parte del libro, in questo capitolo vedremo come interagire con i file ed i driver. Nelle prime pagine viene fatta una breve ma significativa introduzione ai provider, successivamente si passa ad esempi pratici sulla gestione dei file.</p>
<p class="MsoNormal">Il capitolo diciottesimo, riguarda l&rsquo;utilizzo di Windows Management Instrumentation (WMI) tramite PowerShell. Utilizzando WMI, si possono rilevare informazioni sul sistema operativo, molto utile in ambito aziendale. Nelle prime pagine del capitolo viene introdotto WMI, successivamente si passa all&rsquo;utilizzo di WMI in PowerShell, con la descrizione di alcuni comandi.</p>
<p class="MsoNormal">Il capitolo 19, illustra come poter utilizzare la tecnologia Com, le dll di altri applicativi con PowerShell. Interessanti gli esempi che vengono illustrati, come interagire con Explorer, o Microsoft Excel e Microsoft Word. Capitolo molto breve ma significativo, che consente al lettore di acquisire una buona base, per l&rsquo;utilizzo di COM in PowerShell.</p>
<p class="MsoNormal">Nel capitolo ventesimo, vedremo la possibilit&agrave; di leggere il contenuto di un file o scrivere delle informazioni. In questo capitolo vengono fornite interessanti indicazioni su come poter leggere i file o scrivere.</p>
<p class="MsoNormal">Il capitolo 21, riguarda la gestione del sistema, in particolare vedremo come gestire i processi attivi nel sistema, o interagire con i servizi. Un capitolo, che pu&ograve; tornare utile anche a coloro che gi&agrave; utilizzano questa tecnologia.</p>
<p class="MsoNormal">Nel capitolo 22, troviamo la gestione dei file XML. Il protocollo di scambio XML negli ultimi anni &egrave; molto usato, in questo capitolo vedremo come poter utilizzare nelle nostre applicazioni questo protocollo, effettuare delle ricerche ed altre interessanti operazioni. Il capitolo, fornisce brevemente alcune indicazioni.</p>
<p class="MsoNormal">Il capitolo 23, conclude la quarta parte del libro. In questo capitolo viene illustrato come poter rilevare informazioni riguardante il registro degli eventi di Windows. Vengono riportati frammenti di codice, per rilevare indicazioni sugli eventi del sistema operativo Windows.</p>
<p class="MsoNormal">La quinta ed ultima parte del libro, si apre con il capitolo ventiquattresimo. In questo capitolo, l&rsquo;autore, fornisce interessanti tecniche di come poter utilizzare la shell con internet, esempi pratici come la possibilit&agrave; di effettuare il download dei file, la gestione del protocollo hhtp, elaborare i feed rss, ed altre interessanti tecniche.</p>
<p class="MsoNormal">Il capitolo venticinquesimo, riguarda la possibilit&agrave; di interagire con l&rsquo;host, in particolare come personalizzare la shell, applicare dei stili ed altre cose interessanti.</p>
<p class="MsoNormal">Nel capitolo 26, vedremo come creare degli script di PowerShell, eseguiti in sessioni indipendenti, definiti precisamente Job. Un capitolo molto interessante, che fornir&agrave; al lettore le basi per la creazione dei propri job per eseguire determinate attivit&agrave;.</p>
<p class="MsoNormal">Nel penultimo capitolo (27) viene illustrata un argomento molto importante, che pu&ograve; tornare utile anche a coloro che hanno gi&agrave; esperienza con PowerShell. In questo capitolo, vedremo come eseguire in remoto degli script, un capitolo che illustra in maniera molto semplice e chiara la possibilit&agrave; di eseguire questi script</p>
<p class="MsoNormal">L&rsquo;ultimo capitolo (28) di questo buon manuale, affronta in maniera esauriente la gestione degli errori. Nel capitolo, viene illustrata in maniera chiara e completa come poter gestire quelle situazioni che potrebbero compromettere la funzionalit&agrave; del codice. Diversi spunti, che forniranno al lettore una valida ed adeguata conoscenza sulla gestione degli errori.</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">&nbsp;</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>Parte 1) introduzione</p>
<p>1) Installazione e primo avvio</p>
<p>2) Concetti di base</p>
<p>Parte 2) Sintassi di base</p>
<p>3) Oggetti e tipi di oggetto</p>
<p>4) Lavorare con gli script</p>
<p>5) Gli Alias</p>
<p>6) Un p&ograve; di logica</p>
<p>7)&nbsp; Il Flusso di esecuzione</p>
<p>8) La pipeline</p>
<p>9)&nbsp; l'output</p>
<p>Parte 3) Elaborazione dei dati</p>
<p>10)&nbsp; Gli array</p>
<p>11) Gli array associativi</p>
<p>12) Le stringhe</p>
<p>13) Wildcard ed espressioni regolari</p>
<p>14) I numeri</p>
<p>15) Le date e gli intervalli temporali</p>
<p>16) Funzioni e filtri</p>
<p>Parte 4) Amministrazione del sistema</p>
<p>17) I Provider</p>
<p>18) WMI</p>
<p>19) COM</p>
<p>20) Leggere e scrivere file</p>
<p>21) Gestire processi e servizi</p>
<p>22) XML. XPATH, e XSLT</p>
<p>23) Registro eventi di Windows</p>
<p>Parte 5) Funzionalit&agrave; avanzate</p>
<p>24) Internet e la shell</p>
<p>25) Interagire con l'Host</p>
<p>26) Job in background</p>
<p>27) Eseguire task in remoto</p>
<p>28) La gestione degli errori</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>.</p>
<p>Un libro molto pratico, che permette al lettore che si avvicina per la prima volta, o che ha iniziato ad utilizzare PowerShell, di acquisire delle buone basi di utilizzo. Nel libro si trovano interessanti esempi di codice riguardante il linguaggio e le relative parole chiavi, e tecniche sulla shell. Il libro contiene molte immagini, in questo modo il lettore non avr&agrave; difficolt&agrave; a comprendere l&rsquo;argomento trattato.</p>
<p>Un ottimo manuale indispensabile per tutti coloro che sono interessati ad utilizzare questo strumento, un libro che non pu&ograve; mancare in una libreria di un buon amministratore o programmatore.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Pro C# 2010 and the .Net 4 Platform</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-pro-c-2010-and-the-net-_945.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>07/07/2010 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp; Scheda del libro:
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Andrew Troelsen</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>$59,99</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 1752</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>Maggio 2010</td>
        </tr>
        <tr>
            <td width="146">ISBN 13:</td>
            <td>978-1-4302-2549-2</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>1-4302-2549-1</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Inglese</td>
        </tr>
        <tr>
            <td width="146">ebook</td>
            <td>$41.99</td>
        </tr>
    </tbody>
</table>
<p>Con i suoi 34 capitoli, e ben 1752 pagine, fanno di questo manuale un libro completo per imparare il nuovo linguaggio C# 2010. Il libro Pro C# 2010 and the .Net 4 Platform <a href="http://www.apress.com/book/view/1430225491">http://www.apress.com/book/view/1430225491</a> della casa editrice Apress <a href="http://www.apress.com/">http://www.apress.com</a> fornisce delle valide e complete competenze nel linguaggio di programmazione C# 4- Un libro completo che affronta in maniera professionale e curata diversi aspetti di questo linguaggio.</p>
<p>Nel libro non &egrave; incluso nessun CD-Rom o dvd, i sorgenti dei vari esempi, si possono scaricare dal seguente sito <a href="http://www.apress.com/book/downloadfile/4566">http://www.apress.com/book/downloadfile/4566</a></p>
<p>Andrew Troelsen &egrave; autore di numerosi libri ed articoli in ambito della programmazione del linguaggio C#. Vanta diversi anni di esperienza in questo settore.</p>
<p>Ma vediamo qui di seguito i vari capitolo che fanno parte di questo libro.</p>
<p class="MsoNormal">Nel primo capitolo, viene fornita una buona ed ampia introduzione al Framework e tutto ci&ograve; che ruota intorno alla tecnologia Microsoft .Net. L&rsquo;autore del libro fornisce importanti informazioni del sistema .Net e dell&rsquo;architettura di cui &egrave; composta.</p>
<p class="MsoNormal">Nel secondo capitolo, si passa alla pratica, ed in particolare alla parte riguardante la creazione e compilazione dei programmi. Nelle prime pagine viene illustrata la gestione per la creazione dei file eseguibile tramite il compilatore puro di C#, continuando a leggere il capitolo vengono illustrati altri strumenti come mono, sharpedevelop fino ad arrivare all&rsquo;ambiente di sviluppo Visual Studio 2010. Di questo ultimo ambiente, vengono introdotte brevemente l&rsquo;utilizzo di alcune finestre da utilizzare durante lo sviluppo software.</p>
<p class="MsoNormal">Il capitolo terzo &egrave; rivolto alla sintassi del linguaggio di programmazione, come i tipi, le variabili, cicli, costruttori, switch, condizione if, ed altre parole chiavi, questo capitolo conclude la prima parte del libro.</p>
<p class="MsoNormal">Nel quarto capitolo si passa alla seconda parte del libro, in questo capitolo continua la sintassi del linguaggio, questi primi capitoli sono molto utili per coloro che si avvicinano al linguaggio di programmazione C# o proviene da un altro linguaggio. In questo capitolo vedremo la creazione ed utilizzo dei metodi, gli arrays, i tipi ed altro ancora.</p>
<p class="MsoNormal">Il quinto capitolo &egrave; rivolto alla programmazione oggetti, ed in particolare illustrando le classi. Il capitolo fornisce delle ottime indicazioni sulla tecnica dell&rsquo;incapsulamento, con una serie di esempi pratici. Il capitolo risulter&agrave; molto importante ed utile sia per coloro che si avvicinano alla programmazione con C# ed oggetti, e sia per coloro che gi&agrave; lavorano con questo linguaggio.</p>
<p class="MsoNormal">Anche nel sesto capitolo, continua il tema legato alla programmazione ad oggetti. In questo capitolo vedremo come applicare il polimorfismo tramite il linguaggio C#. Un capitolo che illustra in maniera completa ed esauriente l&rsquo;argomento trattato.</p>
<p class="MsoNormal">Nel capitolo settimo, viene preso in esame la gestione degli errori. Viene illustrato l&rsquo;utilizzo delle classi per la gestione degli errori nel codice e come personalizzarne. Un capitolo molto interessante che fornir&agrave; una valida ed adeguata conoscenza di questo argomento.</p>
<p class="MsoNormal">Il capitolo successivo, l&rsquo;ottavo, tratta un tema poco illustrato nei libri ma molto importante, la gestione della memoria, il ciclo di vita degli oggetti. In questo capitolo vedremo come gestire in modo efficiente la memoria, utilizzando classi come la garbage collecton, creare metodi (finalization, e dispose) per gestire le nostre classi in modo efficiente.</p>
<p class="MsoNormal">La terza parte del libro, inizia con il nono capitolo, in cui viene trattata in maniera professionale ed adeguata il tema delle interfacce. Il lettore in questo capitolo apprender&agrave; l&rsquo;utilizzo delle interfacce, acquisendo una buona conoscenza.</p>
<p class="MsoNormal">Nel decimo capitolo, vengono trattati i generics. Nelle prime pagine viene fatta una breve introduzione alle collections, per poi passare alla creazione di metodi di tipi generics. Il capitolo &egrave; molto ampio, affrontando l&rsquo;argomento in ogni sua particolarit&agrave;. Un capitolo che illustra molto bene l&rsquo;argomento.</p>
<p class="MsoNormal">Il capitolo 11, riguarda i delegati, eventi e lambdas. Nelle prime pagine troviamo una serie di esempi, in particolare i Delegati vengono illustrati in maniera dettagliata. Terminata la parte dei delegati, si passa agli eventi per poi continuare con le espressioni lambda, che conclude il capitolo.</p>
<p class="MsoNormal">Nel capitolo 12, sono illustrati alcune tecniche avanzate come gli array, gli operatori , la conversione di tipi, estendere i metodi, e tante altre cosette interessanti, a cui un buon programmatore deve conoscere. Un capitolo che aiuter&agrave; il lettore a scrivere codice pi&ugrave; performante e pi&ugrave; professionale.</p>
<p class="MsoNormal">Il capitolo 13, riguarda l&rsquo;utilizzo di Linq, con gli oggetti. Un capitolo, molto interessante e che fornisce al lettore adeguate conoscenze e competenze sull&rsquo;utilizzo di Linq. Sono presenti numerosi esempi di codice e scenari che ogni programmatore nel suo sviluppo software incontra. Questo capitolo conclude la terza parte del libro.</p>
<p class="MsoNormal">Il capitolo 14, apre la quarta parte del libro, in questo capitolo viene affrontato il tema delle librerie.</p>
<p class="MsoNormal">Vedremo l&rsquo;utilizzo e la configurazione degli assembly, la possibilit&agrave; di utilizzare pi&ugrave; linguaggi, come il Visual Basic Net, la configurazione, l&rsquo;utilizzo dei file di configurazione e tanto altro. Le immagini e le tabelle riassuntive, aiutano a comprendere l&rsquo;argomento che si sta trattando.</p>
<p class="MsoNormal">Anche nel capitolo quindicesimo, continua l&rsquo;argomento riguardante gli assembly, ma in maniera molto pi&ugrave; avanzata. I diversi esempi forniranno delle conoscenze avanzate su come gestire gli assembly a livello di codice, ed in fase di esecuzione, tecniche molto interessanti.</p>
<p class="MsoNormal">Il capitolo 16 &egrave; rivolto ai processi ed applicazioni. Nelle prime pagine viene illustrato l&rsquo;utilizzo della classe Process per gestire le applicazioni in esecuzione, una serie di esempi per capire a fondo questa classe. Continuando a leggere il capitolo, si passa alla classe AppDomain, in questo modo possiamo gestire la propria applicazione in un determinato contesto.</p>
<p class="MsoNormal">Nel capitolo 17, vedremo la creazione di applicazione rivolte al CIL, un capitolo che fornisce una buona introduzione di ci&ograve;.</p>
<p class="MsoNormal">Nel capitolo diciottesimo, viene illustrata la novit&agrave; del Framework 4, i dynamic types. Nelle prime pagine viene introdotta questa novit&agrave;, continuando a leggere il capitolo sono riportati numerosi esempi di codice che aiutano il lettore a comprendere questa novit&agrave; . Il capitolo conclude la quarta parte di questo manuale.</p>
<p class="MsoNormal">Con il capitolo 19, si passa alla quinta parte del libro, in questo capitolo viene spiegato come creare e gestire il multithreaded, e la programmazione parallela. Nelle prime pagine viene fatta una buona ed esauriente introduzione al multithreaded, terminata la parte introduttiva viene spiegato l&rsquo;utilizzo della classe thread. L&rsquo;autore illustra in maniera molto esauriente e chiara l&rsquo;argomento trattato, permettendo in questo modo di far comprendere al lettore un argomento molto difficile.</p>
<p class="MsoNormal">Il capitolo ventesimo, illustra la gestione dei file e la serializzazione. I numerosi esempi riguardano l&rsquo;utilizzo della classe directory info, fileinfo ed altre classi per la gestione delle cartelle e dei file. La parte conclusiva del capitolo riguarda la serializzazione, il capitolo fornisce delle ottimi basi in ambito della gestione dei file e cartelle.</p>
<p class="MsoNormal">Il capitolo 21, fornisce una valida ed esauriente guida sull&rsquo;utilizzo della base dati. Nella maggior parte dello sviluppo software, si fa uso di un database, in questo capitolo vedremo le classi messe a disposizione da Ado.Net. Nel capitolo si trovano numerosi esempi di codice, che riguardano la gestione dei dati utilizzando le classi per la gestione dei dati in maniera connessa.</p>
<p class="MsoNormal">Nel capitolo 22, continua la trattazione dei dati, in questo capitolo vedremo le classi per la gestione dei dati in maniera disconnessa. I moltissimi esempi di codice, permetteranno al lettore di comprendere l&rsquo;utilizzo delle classi per gestire i dati in modalit&agrave; disconnessa. L&rsquo;argomento &egrave; trattato in maniera approfondita ed esauriente.</p>
<p class="MsoNormal">Anche nel capitolo 23 continua l&rsquo;argomento dei dati, questa volta, utilizzando la novit&agrave; Entity Framework. Dopo una breve introduzione su Entity Framework, si passa ad un esempio pratico, per far comprendere al lettore questa novit&agrave;. Continuando a leggere il capitolo, sono riportati vari esempi di codice, che illustrano in maniera adeguata l&rsquo;utilizzo di EF nelle nostre applicazioni. Con questo capitolo si conclude la parte dedicata alla gestione dei dati tramite Ado.Net.</p>
<p class="MsoNormal">Nel capitolo ventiquattro, si continua a parlare di gestione dei dati, questa volta tramite l&rsquo;utilizzo di Linq con XML. Un capitolo pi&ugrave; breve degli altri, ma con esempi molto pratici per acquisire le nozioni dell&rsquo;utilizzo di Linq con i file di tipo XML.</p>
<p class="MsoNormal">Nel venticinquesimo capitolo, vengono affrontati i servizi, ed in particolare a Windows Comunication Foundation. Nelle prime pagine, viene fornita al lettore un ampia ed approfondita introduzione al modello WCF, illustrando il funzionamento e l&rsquo;architettura di questo sistema. Continuando a leggere il capitolo, troviamo diversi esempi di codice che illustrano vari scenari di utilizzo.</p>
<p class="MsoNormal">Nel capitolo 26, si passa alla novit&agrave; di Windows Workflow Foundation 4. Dopo l&rsquo;introduzione a questa tecnologia, si passa ad un esempio pratico di utilizzo tramite la creazione di un progetto console. Queste prime pagine, permettono al lettore di comprendere questa novit&agrave;. Molto importante per chi si avvicina per la prima volta. Continuando a leggere il capitolo, si passa ad altri esempi di codice e l&rsquo;utilizzo del Designer. Al termine del capitolo si avranno delle buone conoscenze e dimestichezza del suo utilizzo. Il capitolo conclude la quinta parte di questo manuale.</p>
<p class="MsoNormal">La sesta parte, inizia con il capitolo ventisettesimo, in cui viene illustra la creazione di applicazioni di tipo WPF (Windows Presentation Foundation). Il capitolo affronta diversi aspetti di questa tecnologia, un capitolo che fornisce delle ottime basi.</p>
<p class="MsoNormal">Nel capitolo 28, continua la trattazione delle applicazioni di tipo WPF. In questo capitolo, vedremo l&rsquo;utilizzo dei controlli, vengono illustrati l&rsquo;utilizzo dei controlli messi a disposizione da WPF. Nel capitolo vengono trattati anche i file di tipo XAML.</p>
<p class="MsoNormal">Il capitolo 29, affronta la gestione della grafica in WPF. In questo capitolo, vengono illustrati i concetti per utilizzare WPF in ambito di grafica, ossia utilizzo delle classi per la gestione delle forme geometriche ed immagini. Un capitolo molto ampio in cui il lettore sar&agrave; in grado di gestire le immagini.</p>
<p class="MsoNormal">Tutti questi capitoli, sono rivolti alla tecnologia WPF, nel capitolo 30, viene illustra in maniera molto esauriente ed approfondita la possibilit&agrave; di includere nelle nostre applicazioni WPF, l&rsquo;utilizzo delle risorse, stili e l&rsquo;aggiunta di animazioni. Inoltre nel capitolo, troviamo anche qualche esempio di utilizzo dell&rsquo;ambiente Microsoft Expression Blend.</p>
<p class="MsoNormal">Il capitolo 31, conclude la quinta parte del libro, dedicata al mondo WPF. In questo capitolo sono illustrati argomenti avanzati, come i modelli e la possibilit&agrave; di creare controlli personalizzati. Il capitolo guider&agrave; il lettore passo per passo, a comprendere questo tema, illustrando diverse tecniche per creare controlli personalizzati.</p>
<p class="MsoNormal">Con il capitolo 32, si passa alla settimana ed ultima parte di questo ottimo manuale. In questo capitolo, viene illustrato lo sviluppo web tramite C#. Vedremo come utilizzare nelle pagina Asp.Net il linguaggio C# 4. Il capitolo fornisce concetti di base dell&rsquo;architettura Asp.Net, un capitolo adatto a chi si avvicina per la prima volta a questo scenario di sviluppo software. In particolare viene trattato il funzionamento delle pagine web. Un capitolo breve che fornisce le basi.</p>
<p class="MsoNormal">Nel penultimo capitolo (33) vengono illustrati in maniera molto basilare, alcuni controlli, le master page, l&rsquo;utilizzo del controllo sitemap per la navigazione nel sito, e la gestione della grafica tramite l&rsquo;utilizzo dei temi.</p>
<p class="MsoNormal">Nell&rsquo;ultimo capitolo, il trentaquattresimo, viene illustrato l&rsquo;ottimizzazione del sito web, argomenti come il viewstate, il file global.asax, la sessione, gli errori, il caching ed altro ancora, fornendo al lettore delle ottime indicazioni. Argomenti che andrebbero trattati con specifici libri.</p>
<p class="MsoNormal">L&rsquo;appendice A, riguarda la creazione delle applicazioni di tipo windows form, ossia per windows. In questo capitolo sono illustrati alcuni concetti di base, della creazione e gestione delle Windows Forms.</p>
<p class="MsoNormal">L&rsquo;appendice B, illustra i concetti basi e fondamenti per utilizzare la piattaforma Mono, un sistema gratuito che ci permette di creare applicazioni per sistemi operativi diversi da Windows. In queste pagine, l&rsquo;autore del libro vuole fornire indicazioni di base, che permettano di iniziare ad utilizzare questo ambiente gratuito.</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">&nbsp;</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>Parte 1) Introducing C# and the .Net Platform</p>
<p>1)&nbsp; The Philosophy of .Net</p>
<p>2) Building C# applications</p>
<p>Parte 2) Core C# programming constructs</p>
<p>3) Core C# Programming Constructs Part 1</p>
<p>4) Core C# Programming Constructs, Part 2</p>
<p>5) Defining Encapsulated class types</p>
<p>6)&nbsp; Understanding inheritance and Polymorphism</p>
<p>7)&nbsp; Understanding Structured Exception Handing</p>
<p>8) Understanding Object Lifetime</p>
<p>Parte 3) Advanced C# programming Constructs</p>
<p>9)&nbsp; Working with interfaces</p>
<p>10) Understanding Generics</p>
<p>11) Delegates, Events, and Lampdas</p>
<p>12) Advanced C# Language Features</p>
<p>13) Linq to Object</p>
<p>Parte 4) Programming with .Net Assemblies</p>
<p>14) Configuring .Net Assemblies</p>
<p>15) Type Reflection, late binding, and attibute-based-programming</p>
<p>16) Process, appDomains, and object Contexts</p>
<p>17) Understanding CIL, and the Role of dynamic Assemblies</p>
<p>18) Dynamic types and the Dynamic language runtime</p>
<p>Parte 5) Introducing the .Net Base class libraries</p>
<p>19) Multithread and Parallel Programming</p>
<p>20) File I/O and object Serialization</p>
<p>21) Ado.Net part 1: The connected Layer</p>
<p>22) Ado.Net part 2: The Disconnected layer</p>
<p>23) Ado.Net part 3: The Entity Framework</p>
<p>24) Introducing linq to xml</p>
<p>25) Introducing Windows Communication Foundation</p>
<p>26) Introducing Windows Workflow Foundation 4</p>
<p>Parte 6) Building Desktop User Interfaces with WPF</p>
<p>27)&nbsp; Introducing Windows Presentation Foundation and XAML</p>
<p>28) Programming with WPF controls</p>
<p>29) WPF Graphics rendering services</p>
<p>30) WPF resource, animations and styles</p>
<p>31) WPF control templates and usercontrols</p>
<p>Parte 7) Build web applications with Asp.Net</p>
<p>32) Building Asp.net web pages</p>
<p>33) Asp.Net web controls, master page and themes</p>
<p>34) Asp.Net State management techniques</p>
<p>Appendice A) Programming with Windows Forms</p>
<p>Appendice B) Platform-independent .Net development with Mono</p>
<p>&nbsp;</p>
<p></p>
<p><b>Conclusioni</b></p>
<p>Un ottimo libro, che affronta in maniera professionale gli argomenti trattati. Alcuni capitolo sono affrontati in maniera esauriente ed approfondita, altri meno fornendo solo le basi. Un libro indicato per coloro che gi&agrave; utilizzano il linguaggio di programmazione C#.</p>
<p>Nel libro oltre alla linguaggio, vegnono proposti vari scenari, come lo sviluppo web, windows, WPF, ed altro ancora, ma non viene fatto nessun accenno con la tecnologia Silverlight, tecnologia che oggi giorno si sta sempre pi&ugrave; diffondendo.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Windows 7 Reti, sicurezza, tecniche avanzate</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-windows-7-reti-sicurezz_934.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>07/06/2010 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp;&nbsp;
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">DI FLURI ANTONIO - MALTRAVERSI MARCO</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>Euro 58,90</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 784- 17x24 bn</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>2010</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>9788882338657</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiana</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>digital lifestyle pro</td>
        </tr>
    </tbody>
</table>
<p>Con le sue quasi 800 pagine il libro Windows 7, reti, sicurezza, tecniche avanzate <a href="http://www.fag.it/scheda.aspx?ID=32738">http://www.fag.it/scheda.aspx?ID=32738</a> edito della casa editrice FAG <a href="http://www.fag.it/">http://www.fag.it</a> copre molte temi del nuovo sistema operativo Windows 7, fornendo al lettore delle ottime conoscenze.</p>
<p class="MsoNormal">I primi capitoli, fornisco nozioni di base del sistema operativo ed alcuni aspetti, che possono interessare coloro che si avvicinano al mondo Windows. Ma nei capitoli successivi, gli argomenti sono sempre pi&ugrave; complessi ed interessanti per chi utilizza in maniera professionale il nuovo sistema operativo.</p>
<p>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo libro.</p>
<p class="MsoNormal">Nel primo capitolo, viene fatta una buona ed ampia introduzione al nuovo sistema operativo. Nelle prime pagine, vengono illustrate le varie versione del nuovo sistema operativo, continuando a leggere il capitolo ,si fanno i confronti con le versioni precedenti, ed in particolare con Windows Vista e Windows XP La parte conclusiva del capitolo, riguarda alcune novit&agrave;.</p>
<p class="MsoNormal">Nel secondo capitolo, si passa ad una parte molto interessante, l&rsquo;installazione del sistema operativo. In questo capitolo, il lettore acquisir&agrave; le conoscenze adeguate per installare il nuovo sistema operativo Windows 7 su pc con un sistema operativo Windows Vista, oppure effettuare un&rsquo;installazione pulita o tenere il sistema operativo presente ed aggiungere quello nuovo. Un valido capitolo riguardante l&rsquo;installazione.</p>
<p class="MsoNormal">Nel terzo capitolo, vengono descritte alcune novit&agrave; in ambito degli effetti visivi, anche questo capitolo come il precedente &egrave; molto indicato per coloro che si avvicinano al mondo informatico ed in particolare al sistema operativo Windows. Nel capitolo vedremo come personalizzare il sistema operativo o utilizzare i programmi messi a disposizione (windows media center, windows media player, ecc) dalla nuova versione del sistema operativo Windows.</p>
<p class="MsoNormal">Il quarto capitolo &egrave; tutto rivolto ai servizi e software offerti dalla piattaforma gratuita Windows Live Essentials. In questo capitolo viene affrontata in maniera esaustiva e completa l&rsquo;argomento che si sta trattando.</p>
<p class="MsoNormal">Il quinto capitolo, affronta un tema molto pi&ugrave; professionale, e poco considerato per l&rsquo;utente privato. Da questo capitolo in poi verranno affrontati argomenti molto interessanti ma al tempo stesso anche importanti e con una certa professionalit&agrave;. Vedremo in questo capitolo, come rendere il sistema operativo con ottime prestazioni. L&rsquo;uso del registro, delle utility e delle varie impostazioni, tutto questo ci permetter&agrave; di rendere il computer pi&ugrave; performante ma al tempo stesso saper intervenire in quei punti in cui spesso l&rsquo;utente non si &egrave; spinto oltre.</p>
<p class="MsoNormal">Il sesto capitolo, &egrave; tutto dedicato ad una funzionalit&agrave; che ha subito notevoli cambiamenti, la ricerca dei file. In questo, gli autori del libro, affrontano in maniera molto completa ed approfondita la ricerca e disposizione dei file. Un capitolo in cui il lettore sapr&agrave; utilizzare in maniera professionale la funziona di ricerca dei file, che con questa nuova versione di Windows 7 &egrave; stata notevolmente migliorata.</p>
<p class="MsoNormal">Il capitolo 7 &egrave; molto indicato per gli amministratori di rete, infatti in questo capitolo, viene illustrata la possibilit&agrave; di installare e configurare su una rete il nuovo sistema operativo. In questo capitolo, vedremo vari scenari di possibile installazione e gli strumenti messi a disposizione dal sito di Microsoft. Nel capitolo vedremo anche come certificare le applicazioni sul nuovo sistema operativo o la possibilit&agrave; di utilizzare quelle gi&agrave; presenti nella versione precedente. La parte conclusiva del capitolo, riguarda le novit&agrave; per gli sviluppatori, alcuni esempi di codice, per sfruttare le nuove funzionalit&agrave; offerte da questa nuova versione del sistema operativo.</p>
<p class="MsoNormal">Nel capitolo 8, viene affrontato un argomento molto interessante e di grande praticit&agrave;, la gestione della virtualizzazione e dei vhd. Nel capitolo vedremo come creare e gestire le macchine virtuali, sia con lo strumento Virtual pc, e sia con la funzionalit&agrave; di xp mode, proposta da alcune versione di Windows 7. Il capitolo affronta in maniera esauriente ed approfondita questo scenario, buona parte del capitolo riguarda la gestione dei VHD, gli hard disk virtuali.</p>
<p class="MsoNormal">Nel penultimo capitolo (9) viene illustrato uno dei temi pi&ugrave; importanti e delicati del mondo dell&rsquo;informatica, la sicurezza. Nel capitolo vedremo le funzionalit&agrave; offerte dalla nuova versione del sistema operativo Microsoft, alcune tecniche e consigli per rendere il nostro sistema sicuro da probabili attacchi. Man mano che si legge il capitolo, si trovano interessanti tecniche di come rendere il sistema sicuro e proteggere i nostri dati. Un capitolo molto importante affrontato in maniera molto professionale.</p>
<p class="MsoNormal">Nell&rsquo;ultimo capitolo (10) viene illustrato la rete e la gestione delle connessioni. Nelle prime pagine, sono forniti delle ottime nozioni di base, sul funzionamento della rete, proseguendo a leggere il capitolo, si passa ad altri temi, come i servizi web, il desktop remoto, il firewall, gli applicativi defende, l&rsquo;assistenza remota e la parte conclusiva del capitolo tutta dedicata alle reti ai relativi protocolli, fornendo delle ottime basi.</p>
<p class="MsoNormal">Nell&rsquo;appendice A troviamo alcune funzionalit&agrave; di windows ed una tabella dei tasti di scelta rapida, mentre nell&rsquo;appendice B, troviamo alcune cenni sulla parte relativa alla multimedialit&agrave;, l&rsquo;ultima appendice, la C sono forniti accenni sulla sicurezza e crittografia.</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Alla scoperta di Windows Seven</p>
<p>2) Installazione di Windows 7</p>
<p>3) Desktop, aero, e multimedialit&agrave;</p>
<p>4) Windows live Essentials</p>
<p>5) Windows 7: ottimizzazione del sistema operativo</p>
<p>6) Search: Trovare e organizzare le informazioni</p>
<p>7) Deployment e compatibilit&agrave; applicativa</p>
<p>8) Gestione dei VHD, Virtualizzazione e risoluzione dei problemi di legacy</p>
<p>9) La sicurezza dalla A alla Z</p>
<p>10)&nbsp; Networking in Windows seven</p>
<p>Appendice A - Funzionalit&agrave; e nomenclature</p>
<p>Appendice B - La multimedialit&agrave; digitale</p>
<p>Appendice C- Sicurezza e crittografia</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>.</p>
<p>Un ottimo libro, che fornisce preziosi dettagli sulle novit&agrave; e funzionalit&agrave; offerte dalla nuova versione del sistema operativo. Il volume, contiene numerosi immagini, permettendo al lettore di comprendere l&rsquo;argomento che si sta trattando. Un libro che fornisce ottime indicazioni a chi deve utilizzare il nuovo sistema operativo con una certe professionalit&agrave;. Un libro molto utile sia per coloro che utilizzano il sistema operativo a casa e sia per coloro che utilizzano o stanno passando alla nuova versione di questo sistema operativo in ambito lavorativo.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Arduino La guida ufficiale</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-arduino-la-guida-uffici_943.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>01/06/2010 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp;
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Massimo Banzi</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>&euro; 12,90</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 128 15x21</div>
            </td>
        </tr>
        <tr>
            <td width="146">Rilegatura:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">Brossura</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>agosto 2009</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>O'Reilly</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>978-88-481-2424-9</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiano</td>
        </tr>
        <tr>
            <td width="146">Casa Editrice:</td>
            <td>Tecniche Nuove</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>Arduino &egrave; una piattaforma hardware open source, programmabile con il quale si possono gestire impianti elettrici, elettrodomestici e tanto altro.&nbsp; Il libro Arduino la guida ufficiale <a href="http://www.tilibri.com/libri/arduino.html">http://www.tilibri.com/libri/arduino.html</a> edito della casa editrice Tecniche nuove <a href="http://www.tilibri.com/">http://www.tilibri.com/</a> fornisce&nbsp; delle ottime basi per inizizare ad utilizzare questo dispositivo. Un libro molto pratico, che fornisce le conoscenze minime necessarie per utilizzare questa piattaforma che sta riscontrando successo in tutto il mondo.</p>
<p>L'autore del libro Massimo Banzi, &egrave; uno dei creatori di questa piattaforma quindi chi meglio di pi&ugrave; poteva scrivere un libro per imparare ad utilizzarlo.</p>
<p>Per coloro che vogliono iniziare e provare gli esempi del libro, dal seguente sito <a href="http://www.eshopen.com/shop/">http://www.eshopen.com/shop/</a> e qui <a href="http://www.armkits.it/">http://www.armkits.it/</a> possono acquistare la piattaforma Arduino ed i relativi componenti.</p>
<p>&nbsp;</p>
<p>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo ottimo manuale.</p>
<p class="MsoNormal">Il primo capitolo fornisce una brevissima introduzione a questa piattaforma hardware, fornendo al lettore il significato di arduino.</p>
<p class="MsoNormal">Nel secondo capitolo viene illustrato il funzionamento ed i componenti che ne fanno parte, nel capitolo si trovano diversi disegni per aiutare il lettore a comprendere questo settore, molto importante per coloro che si avvicinano al mondo dell&rsquo;elettronica.</p>
<p class="MsoNormal">Il capitolo terzo, fornisce importanti informazioni dell&rsquo;hardware di cui &egrave; costituito arduino e del software da utilizzare per comunicare con questa scheda.</p>
<p class="MsoNormal">Nel quarto capitolo, ci si addentra alla programmazione della scheda Arduino. Dopo una valida introduzione, riguardante i led e sensori ed attuatori , vedremo come utilizzare il linguaggio di programmazione per interagire con i vari componenti hardware. Un capitolo a differenza dei procedenti, molto ampio con diversi esempi di codice.</p>
<p class="MsoNormal">Il quinto capitolo riguarda la gestione dei led, dei sensori, in questo capitolo, troveremo diversi disegni e frammenti di codice, che illustrano come effettuare la gestione dei sensori.</p>
<p class="MsoNormal">Nel penultimo capitolo, il sesto, viene illustrata la tecnica di come comunicare con l&rsquo;hardware, in particolare l&rsquo;utilizzo delle porte.</p>
<p class="MsoNormal">Nell&rsquo;ultimo capitolo (il settimo) seppure molto breve, riporta alcune problematiche che si potrebbero verificare durante la creazione e sviluppo di questa piattaforma.</p>
<p class="MsoNormal">L&rsquo;appendice A, riguarda la scheda, molto breve per fornire le conoscenze basi dell&rsquo;elettronica.</p>
<p class="MsoNormal">L&rsquo;appendice B, continua l&rsquo;argomento delle basi dell&rsquo;elettronica, illustrando i condensatori e resistenze.</p>
<p class="MsoNormal">L&rsquo;appendice C, &egrave; rivolto alla sintassi del linguaggio di programmazione, riportando le parole chiavi pi&ugrave; utilizzate.</p>
<p class="MsoNormal">&nbsp;</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Introduzione</p>
<p>2) La filosofia di Arduino</p>
<p>3) La piattaforma Arduino</p>
<p>4) Cominciare a lavorare davvero con Arduino</p>
<p>5) Input e output avanzati</p>
<p>6) Comunicare con la rete</p>
<p>7) Risoluzione dei problemi</p>
<p>Appendici A) La breadboard</p>
<p>Appendice B) Resistene e condensatori</p>
<p>Appnedice C)&nbsp; Arduino: Guida rapida</p>
<p>Appendice D) Leggere gli schemi</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>.</p>
<p>Un buon libro, per iniziare a lavorare con questa piattaforma. Un libro che spiega in maniera semplice, chiara e professionale la possibilit&agrave; di programmare con la piattaforma arduino per creare degli ottimi strumenti per la propria vita privata e lavorativa. Inoltre nel capitolo sono riportati siti in cui si pu&ograve; approfondire l&rsquo;argomento trattato, capitoli molto brevi ma di grande praticit&agrave;.</p>
<p>Inoltre il lbro si pu&ograve; acquistare anche in formato ebook, ossia in formato elettronico, dal seguente sito <a href="http://www.libridigitali.com/ebook/Arduino">http://www.libridigitali.com/ebook/Arduino</a></p>]]>
</description>
</item>
<item>
<title>Recensione libro: Microsoft Silverlight 4 Business Application Develop</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-microsoft-silverlight-4_932.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>24/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<p></p>
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Cameron Albert, Frank LaVigne</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>$59,99</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 412&nbsp; dimensioni 235mm x 191mm</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>aprile 2010</td>
        </tr>
        <tr>
            <td width="146">ISBN 13:</td>
            <td>978-1-847199-76-8</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>1847199763</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Inglese</td>
        </tr>
        <tr>
            <td width="146">Casa Editrice:</td>
            <td>Packt Publishing</td>
        </tr>
    </tbody>
</table>
<p>Il libro Microsoft Silverlight 4 Business Application Development <a href="https://www.packtpub.com/microsoft-silverlight-4-business-application-development-beginners-guide/book">https://www.packtpub.com/microsoft-silverlight-4-business-application-development-beginners-guide/book</a> edito della casa editrice <a href="https://www.packtpub.com/">https://www.packtpub.com/</a> fornisce interessanti spunti sulla nuova versione di Silverlight 4, con tecniche di casi molti frequenti in ambito lavoro. Non &egrave; una guida base o un manuale in cui il lettore nei vari capitoli acquisisce la conoscenza della programmazione Silverlight, ma un manuale, in cui sono illustrati vari scenari di utilizzo di questa tecnologia, un libro adatto a persone con una conoscenza di base di questa tecnologia.</p>
<p>Il linguaggio di programmazione utilizzato in questo manuale &egrave; C#.</p>
<p>Il libro non contiene nessun Cd-rom o dvd, gli esempi dei vari capitoli si possono scaricare dal seguente sito <a href="https://www.packtpub.com/support?title=Microsoft%20Silverlight%204%20Business%20Application%20Development:%20Beginner%E2%80%99s%20Guide">https://www.packtpub.com/support?title=Microsoft%20Silverlight%204%20Business%20Application%20Development:%20Beginner%E2%80%99s%20Guide</a></p>
<p>Gli autori del libro (Frank Lavigne <a href="http://www.franksworld.com/blog/">http://www.franksworld.com/blog/</a> MVP Cameron Albert <a href="http://www.cameronalbert.com/">http://www.cameronalbert.com/</a> ) e&nbsp; sono persone con una vasta esperienza nel campo della programmazione, e vantano diverse pubblicazioni.</p>
<p>Ma vediamo qui di seguito i vari capitolo che fanno parte di questo libro.</p>
<p class="MsoNormal">Nel primo capitolo viene introdotta la nuova tecnologia, illustrando il funzionamento ed il relativo funzionamento.</p>
<p class="MsoNormal">Il capitolo contiene qualche esempio di codice, per far comprendere al lettore il funzionamento di questo nuovo modo di fare applicazioni per il web.</p>
<p class="MsoNormal">Il capitolo fornisce una breve panoramica ai vari strumenti e tools di Microsoft e di quelli che sono in commercio.</p>
<p>Il secondo capitolo, &egrave; rivolto alla creazione di pagine web basate con Silverlight. In questo capitolo, vedremo come presentare una semplice pagina web in Silverlight tramite l'utilizzo dei controlli bottoni e StackPanel. Nel capitolo si fa uso anche degli strumenti commerciali, come Visual Studio 2010 e Microsoft Expression Blend.</p>
<p>Nel terzo capitolo vedremo come utilizzare la parte multimediale, in particolare i video. In questo capitolo vedremo come riprodurre un video, in questa parte troviamo molte immagini e qualche frammento di codice, interessante anche l&rsquo;uso intenso che si fa del prodotto Expression Blend.</p>
<p>Il quarto capitolo riguarda alcune tecniche interessanti. Nelle prime pagine, viene illustrato lo strumento gratuito Deepzoom, vedremo in queste prime pagine del capitolo la manipolazione delle immagini, come applicare alcuni effetti speciali. Continuando a leggere il capitolo, viene illustrato l&rsquo;utilizzo delle mappe ed in particolare Binq Map ed il relativo controllo. Vedremo come aggiungere alle nostre pagine web di silverlight la possibilit&agrave; di trovare particolari zone. La parte conclusiva del capitolo riguarda la possibilit&agrave; di creare applicazioni per il disegno.</p>
<p>Nel quinto capitolo, viene illustrata la gestione dei dati, in particolare vedremo come creare ed utilizzare un servizio Windows Communication Foundation (WCF) per l&rsquo;elaborare i dati. Il capitolo fornisce delle valide basi di partenza per la gestione dei dati.</p>
<p>Anche nel capitolo sesto vedremo l&rsquo;utilizzo di una fonte dati. In questo capitolo viene illustrata la creazione e gestione di una servizio WCF, inoltre come interagire con il software per la gestione dei contenuti Microsoft Sharepoint. Un capitolo che fornisce molti spunti, illustrando interessanti novit&agrave;, come linq, entity framework e Sharepoint.</p>
<p>La gestione dei dati &egrave; molto curata, al punto che comprende diversi capitoli. Nel capitolo settimo, continua la gestione dei dati illustrando nelle prime pagine la creazione di un database per Sql Server, continuando con l&rsquo;utilizzo e creazione di un servizio WCF per l&rsquo;aggiunta e ricerca dei dati.</p>
<p>Nel capitolo ottavo, viene illustra la parte della creazione e gestione dei grafici tramite il toolkit. In questo capitolo, si esaminano i vari grafici messi a disposizione dal toolkit ed il loro relativo utilizzo.</p>
<p>Nel penultimo capitolo (9), viene illustrata la creazione di un controllo per il disegno. Dopo una breve introduzione, viene illustrato al lettore come creare un controllo personalizzato nel quale tramite il tracciamento del mouse, si possono fare disegni liberi. Continuando a leggere il capitolo vedremo come utilizzare nelle nostre applicazioni Silverlight delle mappe e localizzare determinate zone.</p>
<p>Nell&rsquo;ultimo capitolo (10), vedremo alcune interessati funzionalit&agrave; offerte dalla versione 4 di questa tecnologia. L&rsquo;utilizzo della rete, e la possibilit&agrave; di far girare il nostro applicativo direttamente nel pc dell&rsquo;utente, come se fosse una vera e propria applicazione.</p>
<p>&nbsp;</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Getting Started/p&gt;</p>
<p>2) Enhancing a Website with Silverlight</p>
<p>3) Adding Rich Media</p>
<p>4) Taking the RIA Experience Further With Silverlight</p>
<p>5) Handling Data</p>
<p>6) Back Office Applications</p>
<p>7) Customer Service Applicatin</p>
<p>8) Executive Dashboard Application</p>
<p>9) Delivery application</p>
<p>110)&nbsp; Where to go from here</p>
<p></p>
<p><b>Conclusioni</b></p>
<p>Un libro con molte tecniche di utilizzo della tecnologia Silverlight, inoltre in ogni capitolo viene utilizzato il software Expression blend, per creare pagine ad hoc. Un libro, che tratta argomenti che si possono riscontrare nel lavoro quotidiano. Il libro &egrave; indicato per quelle persone che hanno gi&agrave; una conoscenza di questa tecnologia, oppure da leggere dopo un studio introduttivo alla tecnologia Silverlight. Il linguaggio di programmazione utilizzato in questo libro &egrave; C#.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Professional Asp.Net 4 in C# and VB</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-professional-aspnet-4-i_929.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>18/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<div>Scheda del libro:</div>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Bill Evje, Scott Hanselman, Devin Rader</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>$59,99</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 1536</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>marzo 2010</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>978-0-470-50220-4</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Inglese</td>
        </tr>
        <tr>
            <td width="146">Casa Editrice:</td>
            <td>Wrox</td>
        </tr>
    </tbody>
</table>
<div>Con i suoi 36 capitoli, fanno di questo libro un vero e proprio manuale indispensabile per lo sviluppo web con la tecnologia Asp.Net. Il libro Professional Asp.Net 4 in C# and VB <a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-4-in-C-and-VB.productCd-0470502207.html">http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-4-in-C-and-VB.productCd-0470502207.html</a> della casa editrice <a href="http://www.wrox.com/">http://www.wrox.com/</a> fornisce adeguate e professionali conoscenze della tecnologia Asp.Net. Copre tutti gli argomenti di questa tecnologia.</div>
<div>Il libro non contiene nessun CD-Rom o DVD, i file di esempio si possono scaricare dal seguente sito <a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-4-in-C-and-VB.productCd-0470502207,descCd-DOWNLOAD.html">http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-4-in-C-and-VB.productCd-0470502207,descCd-DOWNLOAD.html</a></div>
<div>Gli autori del libro, (Bill Evjen <a href="http://geekswithblogs.net/evjen/Default.aspx">http://geekswithblogs.net/evjen/Default.aspx</a> Scott Hanselman <a href="http://www.hanselman.com/blog/">http://www.hanselman.com/blog/</a> e Devin Rader <a href="http://geekswithblogs.net/devin/Default.aspx">http://geekswithblogs.net/devin/Default.aspx</a> )&nbsp;sono persone con una vasta esperienza nel settore, tra l&rsquo;altro anche autori di numerosi articoli e libri.</div>
<div>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo ottimo manuale.</div>
<div>Nel primo capitolo come in ogni libro che si rispetti viene fornita al lettore una valida ed esauriente introduzione allo sviluppo web con la tecnologia Asp.Net. Nel capitolo sono forniti indicazioni del funzionamento di questa tecnologia, le numerose immagini aiutano il lettore a comprendere il tema trattato. Viene fornita anche una breve panoramica al web server IIIS. Gli autori, illustrano il funzionamento di una pagina Aspx, le varie direttive, il codice, e l&rsquo;ambiente di sviluppo Visual Studio 2010. In questo primo capitolo si trovano numerosi esempi di codice dei due linguaggi di programmazione pi&ugrave; usati in questa tecnologia.</div>
<div>Nel secondo capitolo, si passa ai controlli server. Vedremo come utilizzare i controlli html, l&rsquo;utilizzo di javascript ed applicare dello stile per migliorarne l&rsquo;aspetto grafico. Un capitolo che fornisce al lettore indicazioni sul risultato finale di una pagina web che ha come base html.</div>
<div>Il capitolo 3, &egrave; orientato all&rsquo;utilizzo dei controlli server messi a disposizione dalla tecnologia Asp.Net. Vedremo alcuni esempi di codice sull&rsquo;utilizzo dei controlli, quali button, textbox, label, imagebutton, linkbutton, hyperlink, dropodownlist, listbox, checkbox, checkboxlist, radiobutton, radiobuttonlist, image, table, calendar, adrotator, panel, placeholder, bulletedlist, hiddenfield, file upload, multiview, wizard, side naigation, imagemap, ed il nuovo controllo chart. Un capitolo con molti spunti sull&rsquo;utilizzo della maggior parte dei controlli utilizzati pi&ugrave; spesso.</div>
<div>Il capitolo 4, si passa ai controlli ci convalida. Dopo un buona introduzione alla validazione dei dati nei vari controlli Asp.Net, vedremo l&rsquo;utilizzo del controllo RequiredFieldValidator, con una serie di esempi di codice per far comprendere al lettore l&rsquo;utilizzo di questo controllo. Terminato il controllo RequiredFieldValidator, si passa al controllo CompareVAlidator, proponendo esempi e spiegazione. Gli altri controlli illustrati in questo capitolo sono RangeValidator, RegularExpressionValidator, CustomValidator, validationSummary. Per ogni controllo viene fornita una valida spiegazione ed interessanti esempi di codice di utilizzo del controllo. Un buon capitolo che fornir&agrave; adeguate basi sulla validazione dei dati.</div>
<div>Il capitolo quinto, affronta un argomento interessante e molto usato, le master page. Nelle prime pagine viene fatta un&rsquo;ampia introduzione alle mater page, continuando a leggere il capitolo si passa alla creazione ed utilizzo della master page, il lettore non avr&agrave; difficolt&agrave; a comprendere l&rsquo;argomento trattato in quanto le innumerevoli immagini guidano il lettore passo per passo alla creazione ed utilizzo di questa tipologia di pagina. L&rsquo;argomento &egrave; trattato in maniera ottimale.</div>
<div>Nel capitolo sesto si parla dei temi e stili, un capitolo dedicato alla gestione dell&rsquo;aspetto grafico ed espositivo dei vari controlli. Dopo una brevissima introduzione, si passa ad un esempio pratico, prendendo come spunto il controllo calendario in particolare applicando un tema. Continuando a leggere il capitolo, si passa alla creazione dei skin. Il capitolo a differenza dei precedenti &egrave; molto breve, fornisce le basi di utilizzo dei teme e skin.</div>
<div>Il capitolo 7, tratta un argomento molto importante ed utilizzato, il data binding. Infatti nella maggior parte della applicazioni si utilizza una fonte dati. Nelle prime pagine viene illustrato l&rsquo;utilizzo del controllo data source, sqldatasource, con numerosi esempi di codice per gestire i dati. Continuando a leggere il capitolo, si passa all&rsquo;utilizzo del controllo AccessDataSource, linqDataSource, entityDataSource, xmldatasource, objectdatasource, sitemapdatasource, gridView, listview, formview, treeView, adrotator. Un capitolo molto interessante che illustra in maniera molto esauriente la gestione dei dati. Il capitolo contiene moltissimi frammenti di codice per fornire al lettore indicazioni e tecniche di come manipolare i dati. La parte conclusiva del capitolo, riguarda i controlli che permettono di gestire i dati fornendo tecniche di come associare ad un controllo una fonte dati.</div>
<div>Nel capitolo ottavo, continua la gestione di una fonte dati, in questo capitolo vedremo l&rsquo;utilizzo di Ado.Net. Nel capitolo sono illustrate l&rsquo;utilizzo delle classi per gestire i dati, classi come i dataReader, command, connection, e tante altre classi per gestire un database. Il capitolo illustra interessanti tecniche di utilizzo di Ado.Net, fornendo al lettore una spiegazione professionale ed approfondita di questa tecnologia. Al termine del capitolo, il lettore avr&agrave; acquisito delle buone conoscenze sulla gestione dei dati, permettendo di scrivere applicazioni con una certa professionalit&agrave;.</div>
<div>Con il modello Linq, si possono eseguire delle query direttamente da codice. Nel capitolo nono viene spiegato come utilizzarlo. Numerosi sono gli esempi e scenari di utilizzo di questa tecnologia. Utilizzo con gli oggetti, linq to sql, linq to xml, numerosi esempi e aspetti di questo nuovo modo di gestire i dati, vedremo come utilizzarlo con l&rsquo;uscita con la versione del framework 4.0. Un ottimo capitolo che permetter&agrave; al lettore di acquisire una buona conoscenza.</div>
<div>La gestione dei dati, &egrave; un tema molto ma molto importante. Come abbiamo visti nei precedenti capitoli vengono illustrati vari aspetti e varie tecnologie. Nel capitolo 10, viene affrontato la gestione dei file XML. In questo capitolo vedremo come utilizzarli e come applicare Linq. Nei primi capitoli viene fornita una buona introduzione al protocollo XML, fornendo indicazioni anche nell&rsquo;applicare uno schema. Terminata la parte introduttiva di XML, si passa alle classi offerte dal framework Microsoft .Net, ed in particolare alle classi XMLReader e XMLWriter. Vedremo classi per la lettura e scrittura dei dati in xml. Continuando a leggere il capitolo, si passa all&rsquo;utilizzo di Ling, per gestire i file xml. Un valido capitolo, che fornisce adeguate conoscenze sull&rsquo;utilizzo dei file xml.</div>
<div>Il capitolo 11, illustra una parte molto importante, la gestione del sito, fornendo importanti indicazioni sul web server Internet Information Services (IIS) , gestione del membership, dei ruoli, sessione e tanto altro. Un capitolo molto importante.</div>
<div>Nel capitolo 12, continua la parte della gestione dei profili, in questi due capitoli (11, 12) gli autori del libro vogliono illustrare l&rsquo;importanza e l&rsquo;amministrazione della gestione dei ruoli. In questo capitolo vedremo come estendere il model provider.</div>
<div>Il capitolo 13, riguarda la navigazione del sito. In questo capitolo verranno illustrate le tecniche e l&rsquo;utilizzo di controlli per dotare il sito di un buon sistema di navigazione. Dopo una breve introduzione, viene illustrato il controllo sitemap, con diversi esempi di codice. Continuando a leggere il capitolo si passa al controllo treeview con una numerosa serie di esempi di codice. Anche il controllo menu, viene illustrato. Un capitolo che fornisce delle buone indicazioni e conoscenze per migliorare la navigazione del sito.</div>
<div>Nel capitolo quattordicesimo, vedremo come personalizzare con l&rsquo;aggiunta di apposite propriet&agrave; il profilo di colui che sta visitando il sito. Vedremo come dotare nelle nostre applicazioni web la possibilit&agrave; di personalizzare il profilo del navigatore. Un capitolo molto importante, visto che spesso nelle applicazioni web si fa uso dei ruoli, accessi ad utenze e tant&rsquo;altro.</div>
<div>Il capitolo quindicesimo, continua la parte sicurezza, ed in particolare per la gestione dei ruoli e dell&rsquo;autenticazione. In questo capitolo sono riportati diversi esempi di codice riguardante i controlli e classi messi a disposizione per la gestione dell&rsquo;autenticazione al sito. Il capitolo affronta in maniera esauriente e completa la gestione della sicurezza.</div>
<div>Nel capitolo 16, si affrontano i controlli web part. Dopo una breve introduzione allo sviluppo delle web part ed aree del sito, si passa al controllo WebPartzone, illustrandone il funzionamento. Continuando a leggere il capitolo, vedremo l&rsquo;utilizzo dell&rsquo;aggiunta di web part, ed altre tecniche per la gestione delle web part. Viene illustrato anche come creare delle web part personalizzate. Un capitolo molto ampio sul tema delle web part.</div>
<div>Il capitolo 17 a differenza dei precedenti &egrave; pi&ugrave; breve, ma fornisce degli ottimi spunti sull&rsquo;utilizzo del codice Html e dei fogli di stile in Asp.Net. Inoltre vedremo come utilizzare il nuovo ambiente di sviluppo Visual studio 2010 per gestire codice markup (html) ed i fogli di stile.</div>
<div>Con il capitolo diciottesimo si passa all&rsquo;utilizzo di Ajax in Asp.Net. Nelle prime pagine, viene fornita una buona introduzione ad Ajax ed al suo funzionamento, terminata la parte introduttiva si passa ad un esempio di utilizzo. Nelle pagine successive viene illustrato l&rsquo;utilizzo dei controlli pi&ugrave; comuni di ajax e di alcune funzionalit&agrave;.</div>
<div>Anche il capitolo successivo, ossia il diciannovesimo, continua l&rsquo;argomento Ajax, in questo capitolo vedremo l&rsquo;utilizzo del Control Toolkit. Nelle prime pagine, sono fornite indicazioni su questa estensione di ajax, ed in particolare l&rsquo;installazione nel nuovo ambiente di sviluppo. Successivamente vengono illustrati alcuni controlli come animationExtender, autocompleteExtender, calendarExtender, CollapsiblePanelExtender, ColorPickerExtender, ConfirmButtonExnder, modalpopupExender, DragPanelExtender, e molti altri.</div>
<div>Nel capitolo ventesimo, gli autori affrontano un tema molto importante per coloro che sviluppano siti, la sicurezza. Oggi giorno la realizzazione di un&rsquo;applicazione web, che sia una intranet o aperta al pubblico, deve avere un alto livello di sicurezza. Nel capitolo si affronta questo tema, argomento molto importante per tutti coloro che intendono sviluppare delle vere applicazioni web. Nelle prime pagine, viene fornita al lettore una valida ed ampia introduzione alla sicurezza. Successivamente si passa alla gestione dei ruoli, delle utenze e dagli strumenti messi a disposizione dal web server IIS e dal sistema operativo Windows. Continuando a leggere il capitolo, si passa ad esempi di codice riguardante la sicurezza, una serie ampia di esempi riguardante la possibilit&agrave; di dotare le nostre applicazioni web, con un alto livello di sicurezza. Un ottimo capitolo che affronta in maniera molto professionale ed esauriente l&rsquo;argomento sicurezza.</div>
<div>Il capitolo ventunesimo, &egrave; molto importante perch&eacute; illustra lo stato dell&rsquo;applicazione web. In particolare vengono illustrate l&rsquo;utilizzo migliore per la gestione della sessione.</div>
<div>Continua la parte della gestione delle informazioni tra pagine web, nel capitolo 22, si passa alla gestione della cache. Nel capitolo viene affrontata in maniera esauriente l&rsquo;argomento, fornendo al lettore le giuste conoscenze.</div>
<div>Nel capitolo 23, viene illustrato la gestione del debug. In questo capitolo sono illustrate le classi, gli strumenti e le tecniche per risolvere i vari problemi che si possono verificare durante l&rsquo;esecuzione del codice. Il tracing, le funzionalit&agrave; offerte da Visual Studio 2010, le classi per la gestione degli errori e tanto altro, il tutto per gestire i problemi che si possono verificare.</div>
<div>Il capitolo ventiquattro riguarda la gestione delle cartelle e file. In questo capitolo vedremo le classi messe a disposizione dal framework per la gestione delle cartelle e file. Un ottimo capitolo, in cui si fa una valida ed approfondita conoscenza della gestione dei file, dello stream dati, gestione delle cartelle, e tanto altro. Molti gli esempi utilizzati in questo capitolo. La parte conclusiva del capitolo riguarda le connettivit&agrave;, come l&rsquo;invio di email, la gestione del ftp, l&rsquo;uso delle porte e tanto altro. Il lettore al termine del capitolo avr&agrave; acquisito una buona padronanza di tale argomento.</div>
<div>Il capitolo 25, tratta un argomento complesso ma molto importante, la creazione di controlli. In questo capitolo si trovano numerosi esempi di codice ed ottime indicazione sulla creazione di componenti server. Il capitolo inizia illustrando la creazione di semplici controlli, man mano che si legge il capitolo, si passa a sviluppi sempre pi&ugrave; complessi, un capito ben fatto che fornisce ottimi spunti.</div>
<div>Nel capitolo 26, viene illustrato la gestione dei moduli. Vedremo come utilizzare l&rsquo;oggetto httphandlers, e la gestione di IIS, il capitolo fornisce delle ottime basi di partenza, molto breve dei precedenti capitoli.</div>
<div>Il capitolo ventisettesimo illustra il nuovo paradigma MVC. Dopo una buona ed ampia introduzione a MVC, viene spiegato la creazione della prima applicazione Asp.Net MVC. Continuando a leggere il capitolo, vengono fornite indicazioni architetturali di questa tecnica, fornendo ottimi spunti. La parte restante del capitolo &egrave; rivolto alle varie parti (View, Controller, Model) di cui &egrave; composto MVC. Un capitolo che fornisce adeguate conoscenze.</div>
<div>Il capitolo 28 affronta un argomento che nella maggior parte dei libri non si trova, la creazione di componenti (dll), l&rsquo;utilizzo di componenti COM. Il capitolo non molto ampio, fornisce ottimi spunti per sviluppare componenti di qualit&agrave;.</div>
<div>Nel capitolo 29, viene illustrata una delle novit&agrave; per la gestione dei dati, Ado.Net Entity Framework. Nelle prima pagine viene fatta una buona introduzione a questo nuovo modo di sviluppare soluzioni che utilizzano una fonte dati. Terminata la parte introduttiva, viene illustrato un semplice esempio di utilizzo. Continuando a leggere il capitolo, sono fornite ottimi spunti di utilizzo. Il capitolo fornisce le conoscenze di base di questo nuovo modo di sviluppare applicazioni che si basano su una fonte dati.</div>
<div>Anche nel capitolo 30 l&rsquo;argomento &egrave; la gestione dei dati. In questo capitolo vedremo Asp.Net Dynamic Data. Un buon capitolo, seppur introduttivo a questa nuova tecnologia.</div>
<div>Nel capitolo 31 viene illustrata in maniera esauriente ed approfondita i servizi web. In questo capitolo sono illustrati la creazione e la gestione dei servizi web di tipo ASMX ed i nuovi servizi creati tramite Windows Communications Foundation. Un capitolo molto ampio con ottimi esempi di codice e vari aspetti sui servizi web. Sia per il servizio web di tipo ASMX che per WCF, viene fornita una buona introduzione, permettendo al lettore che si avvicina per la prima volta a questo mondo, di comprendere il funzionamento e l&rsquo;architettura dei servizi.</div>
<div>Nel capitolo trentaduesimo, si passa alla creazione di applicazioni web localizzate, ossia come gestire la cultura nelle proprie applicazioni. Nel capitolo sono illustrate le varie classi per la gestione della cultura e tecniche di come rendere le applicazioni web scalabili facilmente in base ad una determinata lingua. La parte conclusiva del capitolo illustra l&rsquo;utilizzo delle risorse.</div>
<div>Nel capitolo 33, viene illustrata la configurazione nelle applicazioni web. In questo capitolo, vedremo diversi spunti e tecniche di come utilizzare il file web.config ed altri file per gestire le applicazioni web. Un capitolo molto ampio, che approfondisce questo tema. Anche in questo caso, a differenza di molti libri, l&rsquo;argomento viene affrontato in maniera professionale, approfondendo l&rsquo;argomento. Il lettore al termine del capitolo avr&agrave; delle ottime conoscenze sulla gestione della configurazione nella tecnologia Asp.Net.</div>
<div>Nel capitolo 34, vengono illustrate alcune tecniche di gestione log, come la gestione degli eventi, il tracciamento, i log e tanto altro, un capitolo molto interessante.</div>
<div>Nel penultimo capitolo, il 35, vengono illustrati gli strumenti per l&rsquo;amministrazione e manutenzione delle applicazioni Web. Vedremo come utilizzare il tool di amministrazione di Asp.net. Un buon capitolo, che fornisce ottimi dettagli delle varie funzionalit&agrave; offerte da questo strumento.</div>
<div>Nel capitolo conclusivo (36) di questo ottimo libro, viene spiegato in modo professionale, la creazione di un pacchetto di installazione, la pubblicazione del proprio sito. Vedremo i tools, da utilizzare, gli strumenti messi a disposizione da Visual Studio 2010 e tante altre tecniche di come rilasciare l&rsquo;applicazione web.</div>
<div>L&rsquo;appendice A, riguarda la migrazione delle vecchie applicazioni Asp.Net in questa nuova versione. Un capitolo molto utile ed interessante per coloro che stanno migrando le proprie applicazioni web.</div>
<div>L&rsquo;appendice B, sono riportati diversi strumenti che possono migliorare la stesura di codice. Nel capitolo sono elencati alcuni degli strumenti molto usati.</div>
<div>L&rsquo;appendice C, fornisce delle indicazioni di base, sulla tecnologia Silverlight. In questo capitolo troviamo alcuni spunti di base su come utilizzarlo in Asp.net.</div>
<div>L&rsquo;appendice D, indica i tipi dinamici una delle novit&agrave; di .Net.</div>
<div>L&rsquo;appendice E, fornisce alcune risorse on line.</div>
<div>&nbsp;</div>
<div>Qui di seguito si riportano i vari capitoli del libro.</div>
<div>1) Applicatin and page frameworks</div>
<div>2) Asp.Net Server controls and client.side scripts</div>
<div>3) Asp.Net web server controls</div>
<div>4) Validation server controls</div>
<div>5) Working with master pages</div>
<div>6) Themes and Skins</div>
<div>7) Data binding</div>
<div>8) Data Management with Ado.Net</div>
<div>9) Querying with Linq</div>
<div>10)&nbsp; workig with xml and Linq to Xml</div>
<div>11) Introduction to the Provider Model</div>
<div>12) Extending the Provider Model</div>
<div>13) Site Navigation</div>
<div>14) Personalization</div>
<div>15) Membership and Role Management</div>
<div>16) Portal Frameworks and Web Parts</div>
<div>17) Html and CSS Design with Asp.Net</div>
<div>18) Asp.Net Ajax</div>
<div>19) Asp.Net Ajax control Toolkit</div>
<div>20) Security</div>
<div>21) State Management</div>
<div>22) Caching</div>
<div>23) Debugging and Error Handling</div>
<div>24) File I/O and Streams</div>
<div>25) User and Server Controls</div>
<div>26) Modules and handlers</div>
<div>27) Asp.Net MVC</div>
<div>28) Using Business Objects</div>
<div>29) Ado.Net Entity Framework</div>
<div>30) Asp.Net Dynamic Data</div>
<div>31) Working With Services</div>
<div>32) Building Global Applications</div>
<div>33) Configuration</div>
<div>34) Instrumentation</div>
<div>35) Administration and Management</div>
<div>36) Packaging and Deploying Asp.Net Applications</div>
<div>Appendice A) Migrating older Asp.net Project</div>
<div>Appendice B) Asp.Net Ultimate Tools</div>
<div>Appendice C) Silverlight 3 and Asp.Net</div>
<div>Appendice D) Dynamic Types and Languages</div>
<div>Appendice E) Asp.Net Online Resources</div>
<div>&nbsp;</div>
<div><b>Conclusioni</b>.</div>
<div>Un ottimo libro adatto sia a chi sviluppa con il linguaggio di programmazione Visual Basic e sia per quelli che utilizzano il linguaggio di programmazione C#. Un libro completo e fondamentale per tutti coloro che utilizzano la tecnologia Asp.Net o per chi si sta avvicinando. In tutti capitoli si trovano diversi esempi di codice ed immagini. Il libro fornisce ottimi spunti ed indicazioni sullo sviluppo professionale di applicazioni WEB. Un ottimo libro che non pu&ograve; mancare in una libreria di un buon programmatore.</div>]]>
</description>
</item>
<item>
<title>Introduzione alla gestione del mouse in Silverlight</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_introduzione-alla-gestione-del-mouse-in-_916.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>17/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione.</h3>
<p>Nelle applicazioni web create con la tecnologia Silverlight, si pu&ograve; gestire il puntatore del mouse ed il relativo cursore.<br />
Molti controlli, infatti supporto diversi eventi del mouse, come il tasto sinistro, lo spostamento e cos&igrave; via.</p>
<p>Gli eventi che possiamo utilizzare sono diversi&nbsp; ne vediamo qualcuno.<br />
L&rsquo;evento del mouse denominato MouseMove si verifica Nel momento in cui il puntatore del mouse viene spostato.<br />
Qui di sguito si riporta un esempio di tale evento</p>
<p><br />
<strong>C#<br />
</strong></p>
<div class="code">Point posizione = e.GetPosition(this);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;X: &quot; + posizione.X + &quot; Y: &quot; + posizione.Y);</div>
<p><strong>VB.Net</strong></p>
<div class="code">Dim posizione As Point = e.GetPosition(Me)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;X: &quot; &amp; posizione.X &amp; &quot; Y: &quot; &amp; posizione.Y)</div>
<p><br />
L&rsquo;evento MouseLeftButtonDown si verifica nel momento in cui si fa click con il pulsante sinistro del mouse</p>
<p><br />
<strong>C#</strong></p>
<div class="code">&nbsp; private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Hai fatto click&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><strong>VB.Net </strong></p>
<div class="code">Private Sub TextBlock_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Hai fatto click&quot;)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
L&rsquo;evento MouseLeftButtonUp si verifica nel momento in cui si sta rilasciando il pulsante sinistro del mouse, ossia dopo aver fatto click con il pulsante sinistro.</p>
<p><br />
Il cursore del mouse si pu&ograve; cambiare anche nel momento in cui la nostra applicazione &egrave; in esecuzione.</p>
<p><strong>C#</strong></p>
<div class="code">this.Cursor = Cursors.Hand;</div>
<p><br />
<strong>VB.Net</strong></p>
<div class="code">Me.Cursor = Cursors.Hand</div>
<p></p>
<h3>Conclusioni:</h3>
<p>L&rsquo;uso del curosre pu&ograve; tornare utile sia nella gestione dei vari controlli che nella pagina intera. Possiamo applicare un certo stile o controllare l&rsquo;input dell&rsquo;utente il tutto tramite gli eventi che si hanno a disposzione.</p>
<p>&nbsp;</p>]]>
</description>
</item>
<item>
<title>Asp.Net il controllo checkbox</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-il-controllo-checkbox_914.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>12/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Il controllo checkboxlist, &egrave; un controllo simile al controllo Listbox, solo con la differenza che presenta per ogni elemento, un casella di selezione ossia una ckeckbox.<br />
Il controllo pu&ograve; tornare utile, nel caso si ha la necessit&agrave; di visualizzare un elenco di voci con selezione multipla, evitando in questo modo un inserimento massiccio dei controlli Checkbox.</p>
<h3>Stesura del codice &ndash; caricamento dei dati</h3>
<p>Supponiamo di caricare il controllo checkbolist con i dati riguardante alcune citt&agrave;, nell&rsquo;evento load della pagina, si crea un oggetto di tipo datatable, valorizzando con dei dati a piacere</p>
<div class="code">DataTable dttDati = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn dtcCitta = new&nbsp; DataColumn(&quot;Citta&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn dtcCodice&nbsp;&nbsp; = new&nbsp; DataColumn(&quot;Codice&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcCitta);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcCodice);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow dtrRiga ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;] = &quot;Roma&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;RM&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;] = &quot;Milano&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;MI&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;] = &quot;Bologna&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;BO&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;] = &quot;Palmero&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;PA&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;]= &quot;Catania&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;CT&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Citta&quot;] = &quot;Reggio Calabria&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Codice&quot;] = &quot;RC&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckBoxList1.DataSource = dttDati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckBoxList1.DataTextField = &quot;Citta&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckBoxList1.DataValueField = &quot;Codice&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckBoxList1.DataBind();</div>
<p></p>
<h3>Visualizzare gli elementi su pi&ugrave; colonne</h3>
<p>Tramite la propriet&agrave; RepeatColums possiamo impostare la visualizzazione degli elementi in pi&ugrave; colonne<br />
Si riporta il frammento del codice html relative alla propriet&agrave; RepeatColumns</p>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:CheckBoxList ID=&quot;CheckBoxList1&quot;&nbsp; RepeatColumns=&quot;3&quot;&nbsp; runat=&quot;server&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:CheckBoxList&gt;</div>
<p></p>
<h3>Utilizzo di Linq</h3>
<p>Con linq, possiamo in maniera molto semplice e rapida selezionare alcuni elementi del controllo checkbolist.<br />
Qui di seguito si riporta il frammento di codice</p>
<div class="code">string[] parametro = { &quot;RM&quot;, &quot;CT&quot;, &quot;RC&quot; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (from i in CheckBoxList1.Items.Cast&lt;ListItem&gt;() where parametro.Contains(i.Value) select i).ToList().ForEach(i =&gt; i.Selected = true);</div>
<p>&nbsp;</p>
<h3>Conclusioni</h3>
<p>L&rsquo;utilizzo del controllo checkboxlist, pu&ograve; tornare utile in diversi contesti, tramite linq, inoltre si possono fare tante interessanti operazioni.</p>]]>
</description>
</item>
<item>
<title>Asp.net Impostare in fase di esecuzione la gestione della sessione</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-impostare-in-fase-di-esecuzione-l_915.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>11/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Nel file web.config,&nbsp; &egrave; possibile impostare la durata della scadenza della sessione, in questo breve articolo, vedremo come impostare a run time la gestione della sessione, e nel caso che scade tale sessione, visualizzare una pagina di avviso.<br />
Si riporta il frammento di codice relativo al file web.config la parte relativa alla sessione.<br />
Come si vede, tramite il tag sessionestate, possiamo impostare la modalit&agrave; (se database o no) la connessione, e la durata.</p>
<div class="code">&nbsp;&lt;sessionState<br />
&nbsp;&nbsp; mode=&quot;SQLServer&quot;<br />
&nbsp;&nbsp; sqlConnectionString=&quot;data source=NomeServer;initial catalog=aspstate;user id=UserName;password=Password&quot;<br />
&nbsp;&nbsp; cookieless=&quot;false&quot; allowCustomSqlDatabase=&quot;true&quot;<br />
&nbsp;&nbsp; timeout=&quot;20&quot; /&gt;</div>
<br />
<h3>Creazione del progetto.</h3>
<p>Dopo aver aggiunto nel progetto una master page e tre pagine (una visualizzare un messaggio di sessione scaduta) nella master page, inseriamo nella parte del markup HTML, il tag head impostato a livello di server.<br />
Come riportato qui di seguito.</p>
<div class="code">&lt;head runat=&quot;server&quot; id=&quot;PageHead&quot;&gt;</div>
<h3>Stesura di codice</h3>
<p>Fatto ci&ograve; passiamo in visualizzazione codice, nella pagina master page, si crea una propriet&agrave;&nbsp; denominata SessionDurataMinuti, la quale rileva dal webconfig la durata della sessione.<br />
Si crea una propriet&agrave; nella quale si imposta la pagina in cui verr&agrave; visualizzato il messaggio di sessione scaduta. <br />
Sempre restando nella master page, si effettua la sovrascrittura dell&rsquo;evento OnPreRender, in modo che impostiamo nell&rsquo;intestazione (tramite il metodo add della propriet&agrave; control dell&rsquo;oggetto Head)&nbsp; la durata e la pagina relativa alla scadenza della sessione.</p>
<p></p>
<div class="code">public int SessionDurataMinuti<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return Session.Timeout; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //propriet&agrave; che rileva il percorso della pagina per la scadenza della sessione<br />
&nbsp;&nbsp;&nbsp; public string SessioneScadutaUrl<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Url = string.Concat(Request.ApplicationPath != &quot;/&quot; ? Request.ApplicationPath : string.Empty, &quot;/SessioneScaduta.aspx&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Url; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //renderizzo alla pagina di sessione scaduta<br />
&nbsp;&nbsp;&nbsp; protected override void OnPreRender(EventArgs e)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.OnPreRender(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.PageHead.Controls.Add(new LiteralControl(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.Format(&quot;&lt;meta http-equiv='refresh' content='{0};url={1}'&gt;&quot;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SessionDurataMinuti*60, SessioneScadutaUrl)));<br />
&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3>Conclusioni</h3>
<p>L'articolo ha voluto fornire una tecnica per la gestione della sessione, molto utile nel caso che si costruiscono portali in cui &egrave; richiesto l'accesso.</p>]]>
</description>
</item>
<item>
<title>Utilizzare i parametri in un reportviewer</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_utilizzare-i-parametri-in-un-reportviewe_908.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>11/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione.</h3>
<p>Quando si utilizzano dei report, creati con Reporting Services 2005 o 2008, si pu&ograve; avere la necessit&agrave; di utilizzare dei parametri. In questo articolo ,vedremo l&rsquo;utilizzo dei parametri e come effettuare il download del report in formato PDF, sfruttando la funzionalit&agrave; messe a disposizione da questo strumento.<br />
In Asp.net, possiamo visualizzare i report, creati con Reporting Services, apportando alle nostre applicazioni web, un tocco di professionalit&agrave; e sfruttando le potenzialit&agrave; messe a disposizione da Sql Server 2005 o versione successiva.<br />
Dopo aver creato un progetto di tpo web, inseriamo un controllo reportViewer, il quale controllo permetter&agrave; di visualizzare i report</p>
<h3>Stesura&nbsp; di codice</h3>
<p>Passiamo in visualizzazione codice, nell&rsquo;evento load di una pagina web o nel click di un pulsante, scriviamo il codice che permette il caricamento dei dati ed il download del file.<br />
Dopo aver impostato alcune propriet&agrave; del report, come la visualizzazione del pulsante torna indietro, le credenziali ed il percorso del report, si crea un oggetto lista di tipo ReportParameter, il quale conterr&agrave; i singoli parametri che passeremo al report.<br />
Tramite il metodo SetParameters, del controllo (che abbiamo inserito nella pagina web) reportviewer si imposta la lista dei parametri, mentre tramite il metodo Render del controllo&nbsp; si ricava lo stream di byte del formato pdf relativo al report che stiamo caricando.<br />
Questo array di byte ci serve per effettuare il download del report<br />
Nel codice sottostante trovate le suddette operazioni.</p>
<p></p>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Carico a run time il nome del report<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string ReportPath = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Session[&quot;ReportPath&quot;] != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportPath = Session[&quot;ReportPath&quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ShowBackButton = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.ReportServerCredentials = new ClasseCredentials();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.ReportPath = ReportPath;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto la lista dei parametri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;ReportParameter&gt; listParam = new List&lt;ReportParameter&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportParameter param;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto un parametro di chiamato&nbsp; Nome, con un valore e lo aggiungo alla lista dei parametri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Nome = Session[&quot;Nome&quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param = new ReportParameter(&quot;Nome&quot;, Nome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listParam.Add(param);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto un parametro di chiamato&nbsp; Cognome, con un valore e lo aggiungo alla lista dei parametri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Cognome = Session[&quot;Cognome&quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param = new ReportParameter(&quot;Cognome&quot;, Cognome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listParam.Add(param);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto un parametro di chiamato Nazione e valorizzo la lista dei parametri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Nazione = Session[&quot;Nazione&quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param = new ReportParameter(&quot;Nazione &quot;, Nazione);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listParam.Add(param);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto tramite il metodo SetParameters, imposto la lista dei parametri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.SetParameters(listParam);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string mimeType;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string encoding;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string extension;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] streamids;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Warning[] warnings;<br />
&nbsp;&nbsp;&nbsp; //Esporto in PDF il report<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] result = ReportViewer1.ServerReport.Render(&quot;PDF&quot;, null, out mimeType, out encoding, out extension, out streamids, out warnings);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = &quot;application/pdf&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String NomeFile = &quot;File-&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Session[&quot;NomeFile&quot;] != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NomeFile = Session[&quot;NomeFile &quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.AddHeader(&quot;Content-disposition&quot;, &quot;attachment; filename=&quot; + NomeFile + &quot;.pdf&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.BinaryWrite(result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.End();</div>
<h3>Conclusioni</h3>
<p>La tecnologia Reporting Services, &egrave; molto potente, un valido strumento per la creazione dei report, le funzionalit&agrave; e l&rsquo;utilizzo di questo strumento, permettono di realizzare applicazioni windows application o web application con un alto livello di professionalit&agrave;.<br />
L&rsquo;articolo ha voluto fornite una tecnica di utilizzo dei parametri, ossia la possibilit&agrave; di visualizzare un report in riferimento ai dati passati estrapolando di volta in volta, informazioni in base a dei dati che&nbsp;sono stati&nbsp;forniti. Inoltre si &egrave; visto, come una volta caricato il report si effettui il download in formato PDF, permettendo a questo strumento di effettuare tale esportazione.</p>]]>
</description>
</item>
<item>
<title>Utilizzo dei snapshot nei ReportViewer</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_utilizzo-dei-snapshot-nei-reportviewer_900.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>10/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione.</h3>
<p>Vedremo in questo articolo, come utilizzare tramite la tecnologia .Net ed in particolare in un controllo Reportviewer&nbsp; visualizzare dei report basati su snapshot di reporting Services. I reporting servics, di Sql server sono degli ottimi strumenti per la reportistica, tramite il controllo reportViewer, possiamo visualizzare nelle nostre pagine Aspx ed applicazioni per windows, dei report di una certa professionalit&agrave;.<br />
A volte, i report per via della mole dei dati o per le varie informazioni, il loro caricamento richiede del tempo, per evitare che l&rsquo;utente attendi diversi secondi (o minuti) in attesa che il report venga caricato, l&rsquo;utilizzo dei snapshot (si rimanda alla documentazione ufficiale di Sql Server) ci aiuta in questa problematica, velocizzando di molto il loro caricamento.</p>
<p>Prima di utilizzare nel controllo reportviewer uno snapshot, dobbiamo creare una sua cronologia, per far ci&ograve;, aprite la pagina di reporting Services quella di amministrazione, nelle propriet&agrave; del report di vostro interesse, nel menu superiore selezionate la voce Cronologia, nella pagina che viene aperta, fate click sulla voce Nuovo Snapshot.<br />
A questo punto si &egrave; creato uno snapshot, nella cronologia.</p>
<h3>Stesura di codice</h3>
<p>Il codice per la gestione dei report, fa uso del servizio web (Asmx) di reporting services. Inserite nel progetto un riferimento al servizio web di reporting services, di norma il servizio web ha il seguente percorso &ldquo;http://NomeServer/ReportServer/ReportService2005.asmx&rdquo; dove NomeServer, indica il server in cui si trova il servizio web.<br />
Nel progetto web, fate click con il pulsante destro e&nbsp; tramite il menu di scelta rapida (tasto destra)&nbsp; selezionare la voce aggiungi riferimento web. <br />
Nella pagina in cui si trova il controllo reportViewer, e pi&ugrave; precisamente dopo aver impostato la propriet&agrave; ReportPath del controllo ReportViewer, si imposta le credenziali dell&rsquo;oggetto a cui fa riferimento il servizio web (Asmx) e tramite il metodo ListReportHistory, che accetta un solo argomento relativo al path del report, rileviamo una lista di oggetti di tipo ReportHistorySnapshot, di questa lista, la propriet&agrave; HistoryId, permette di assegnare al controllo Reportviewer lo snapshot in questione.<br />
Di seguito si riporta il frammento di codice delle suddette operazioni</p>
<div class="code">ReportViewer1.ServerReport.ReportPath = ReportPath;<br />
WSReportService2005.ReportHistorySnapshot[] ListHistorySnapShot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (WSReportService2005.ReportingService2005 ReportServices = new WSReportService2005.ReportingService2005())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp; //imposto le credenziali, gi&agrave; impostati precedentemente al controllo Reportviewer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Net.NetworkCredential Credenziali = (System.Net.NetworkCredential)ReportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto l'url del servizio web che pu&ograve; essere dinamico<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportServices.Url = WebConfigurationManager.AppSettings[&quot;WsReportingServices&quot;].ToString();<br />
&nbsp; //imposto le credenziali<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportServices.Credentials = Credenziali;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Rilevo la lista della cronologia dei SnapShot<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ListHistorySnapShot = ReportServices.ListReportHistory(ReportPath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ListHistorySnapShot.Length &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.HistoryId = ListHistorySnapShot[ListHistorySnapShot.Length - 1].HistoryID;</div>
<p>&nbsp;</p>
<p></p>
<h3>Conclusioni</h3>
<p>Si &egrave; visto come visualizzare dei report basati su Snapshot, in modo che il caricamento di tali report &egrave; molto ma molto pi&ugrave; veloce. Non si &egrave; discusso della creazione e gestione della cronologia dei snapshot, che rimandiamo ai siti qui di seguito, ma una tecnica in .Net di come gestirli.<br />
Qui di seguito trovate dei siti per iniziare a comprendere il funzionamento e l&rsquo;utilizzo dei snapshot.<br />
<a href="http://technet.microsoft.com/it-it/library/dd283119(SQL.105).aspx">http://technet.microsoft.com/it-it/library/dd283119(SQL.105).aspx</a><br />
<a href="http://msdn.microsoft.com/it-it/library/aa256337(en-us,SQL.80).aspx">http://msdn.microsoft.com/it-it/library/aa256337(en-us,SQL.80).aspx</a><br />
<a href="http://msdn.microsoft.com/it-it/library/aa179676(en-us,SQL.80).aspx">http://msdn.microsoft.com/it-it/library/aa179676(en-us,SQL.80).aspx</a></p>]]>
</description>
</item>
<item>
<title>Classe per la gestione delle credenziali in ReportViewer</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_classe-per-la-gestione-delle-credenziali_901.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>10/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Il controllo ReportViewer, &egrave; un controllo che permette di visualizzare i report, in ambiente Asp.Net e Windows application.<br />
La visualizzazione dei report in certi contesti pu&ograve; comportare anche la gestione delle credenziali, ossia dare la possibilit&agrave; di accedere a tali report solo a determinate utenze.<br />
Vedremo come creare una classe che ha il compito di gestire le credenziali ed utilizzarla in un controllo reportViewer.</p>
<h3>Stesura di codice</h3>
<p>La classe avr&agrave; il compito di impersonare un determinato utente rilevando le informazioni dal file webconfig, questi dati riguardano nome utente, password e dominio, di un account creato in Reporting Services.&nbsp; Visto che i report sono stati creati con una certa sicurezza, la visualizzazione dei report pu&ograve; avvenire solo utilizzando la classe nel controllo reportViewer, in modo che sia possibile visualizzare i report.<br />
Questa classe per la sicurezza, eredita dalla classe <em>IReportServerCredentials</em>,</p>
<p>&nbsp;Si riporta il codice completo della classe</p>
<div class="code">using System;<br />
using System.Data;<br />
using System.Configuration;<br />
using System.Web;<br />
using System.Web.Security;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using System.Web.UI.WebControls.WebParts;<br />
using System.Web.UI.HtmlControls;<br />
using Microsoft.Reporting.WebForms;<br />
using System.Security.Principal;<br />
using System.Net;<br />
[Serializable]<br />
public sealed class ClasseReportServerCredentials : IReportServerCredentials<br />
{<br />
&nbsp;&nbsp;&nbsp; public ClasseReportServerCredentials() { }<br />
&nbsp;&nbsp;&nbsp; #region IReportServerCredentials Members<br />
&nbsp;&nbsp;&nbsp; public WindowsIdentity ImpersonationUser<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public ICredentials NetworkCredentials<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new NetworkCredential(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ConfigurationManager.AppSettings[&quot;ReportServerUser&quot;], <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ConfigurationManager.AppSettings[&quot;ReportServerPassword&quot;], <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ConfigurationManager.AppSettings[&quot;ReportServerDomain&quot;]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public bool GetFormsCredentials(out Cookie authCookie, out string username, out string password, out string dominio)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; authCookie = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dominio = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; #endregion<br />
}</div>
<p>&nbsp;</p>
<h3>Utilizzo della classe.</h3>
<p>Supponiamo di utilizzare tale classe in ambiente Asp.Net, in una pagina inseriamo un controllo di tipo ReportViewer, e dopo aver impostato le propriet&agrave; del report, da codice, nel load della pagina, impostiamo la propriet&agrave; ReportServerCredentials con la classe precedentemente creata.<br />
Qui di seguito si riporta il frammento di codice per l&rsquo;utilizzo della classe.</p>
<div class="code">&nbsp;&nbsp;&nbsp; ReportViewer1.ShowBackButton = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.ReportServerCredentials = new ClasseReportServerCredentials();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReportViewer1.ServerReport.ReportPath = ReportPath;</div>
<p>&nbsp;</p>
<h3>Conclusioni</h3>
<p>I report, creati tramite Reporting Services, offrono ottime funzionalit&agrave; e prestazioni, ma in certi contesti questi report sono accessibili solo tramite una determinata utenza o gruppo di utenti, in modo da non compromettere la sicurezza dei dati, soprattutto se sono informazioni sensibili.<br />
Si &egrave; visto come creare una classe in modo che si possa accedere a dei report, in cui sono stati configurati con determinate restrizioni. E&rsquo; importante gestire la sicurezza nelle applicazioni esposte all&rsquo;esterno della propria rete (aziendale e non) per evitare possibili problemi.</p>]]>
</description>
</item>
<item>
<title>Reporting Services impostare le voci dell’elenco per l’esportazione</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_reporting-services-impostare-le-voci-del_894.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>04/05/2010 0.00.00</pubDate>
<description>
<![CDATA[
<img height="122" width="377" alt="" src="/contenutiupload/13/image/RSCombo.png" /><br />
<strong>Figura 1</strong><br />
<br />
<h3>Introduzione</h3>
<p>Nell&rsquo;articolo verr&agrave; illustrata una tecnica riguardante la creazione di una classe che permette di personalizzare il controllo ReportViewer, in particolare la possibilit&agrave; di personalizzare la casella combinata per l&rsquo;esportazione del report, con solo due voci, come illustrato in figura 1.<br />
Quando si utilizza un controllo Reportviewer per la visualizzazione dei report creati con Reporting Services, il controllo espone alcune funzionalit&agrave;, come la visualizzazione della casella combinata relativa allo zoom, il pulsante di aggiornamento della pagina, ed altro ancora, tra queste funzionalit&agrave;, si trova la casella combinata per l&rsquo;esportazione del report in un determinato formato (PDF, Excel, csv, ecc) .<br />
Per personalizzare tale casella, si pu&ograve; fare in due modi, o modificare una parte del webconfig relativo al reporting services, ma questo influisce su tutti report, oppure tramite codice .Net, personalizzare tale casella.<br />
In questo articolo, vedremo come visualizzare due voci per l&rsquo;esportazione del report nel formato PDF e Excel.</p>
<h3>Creazione della classe</h3>
<p>Dopo aver aggiunto il riferimento allo spazio dei nomi Microsoft.Reporting.WebForms si crea una classe che avr&agrave; il compito di personalizzare il controllo ReportViewer.<br />
La classe ha due costruttori, il primo costruttore accetta un oggetto di tipo ReportViewer, che &egrave; il controllo che andremo a passare, mentre il secondo costruttore, accetta il valore di un oggetto di tipo ServerReport, questa classe &egrave; anche una propriet&agrave; del controllo ReportViewer.<br />
Il metodo AbilitaFormato, &egrave; una funzione pubblica che viene richiamata nelle nostre applicazioni web (o windows) passando un array di tipo string, relativo al formato (imposto da Reporting Services) che vogliamo visualizzare nella casella combinata.<br />
Il metodo privato nascondi Voci, viene richiamato dal metodo pubblico, creando un oggetto di tipo FieldInfo relativo alla propriet&agrave; che permette di visualizzare o no il campo, mentre con il metodo SetValue, si imposta a false tale propriet&agrave;.<br />
</p>
<p>Si riporta il codice completo della classe</p>
<p><strong>Codice VB.Net</strong></p>
<div class="code">Imports System.Reflection<br />
Imports Microsoft.Reporting.WebForms <br />
Imports Microsoft.SqlServer.ReportingServices2005.Execution<br />
<br />
Public Class ReportingServicesAbilitaVoci<br />
&nbsp;&nbsp;&nbsp; Private ReadOnly serverReport As ServerReport<br />
&nbsp;&nbsp;&nbsp; ''' &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' Costruttore della classe - passare il controllo ReportinViewer dopo averlo valorizzato in base al percorso del report<br />
&nbsp;&nbsp;&nbsp; ''' &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;param name=&quot;rpReportViewer&quot;&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;remarks&gt;&lt;/remarks&gt;<br />
&nbsp;&nbsp;&nbsp; Public Sub New(ByVal rpReportViewer As Microsoft.Reporting.WebForms.ReportViewer)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Me.serverReport = rpReportViewer.ServerReport<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; Public Sub New(ByVal rpReportViewer As Microsoft.Reporting.WebForms.ServerReport)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Me.serverReport = rpReportViewer<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; ''' &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' Funzione che abilita un determinato formato<br />
&nbsp;&nbsp;&nbsp; ''' &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;param name=&quot;formati&quot;&gt;Array di tipo string ES. PDF, EXCEL&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;remarks&gt;&lt;/remarks&gt;<br />
&nbsp;&nbsp;&nbsp; Public Sub AbilitaFormato(ByVal formati As String())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each extension As RenderingExtension In serverReport.ListRenderingExtensions()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If formati.Length &gt; 0 Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If formati.Contains(extension.Name) &lt;&gt; True Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NascondiVoce(extension)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; ''' &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' Funzione che nasconde la voce<br />
&nbsp;&nbsp;&nbsp; ''' &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;param name=&quot;extension&quot;&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; ''' &lt;remarks&gt;&lt;/remarks&gt;<br />
&nbsp;&nbsp;&nbsp; Private Sub NascondiVoce(ByVal extension As RenderingExtension)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Rilevo l'impostazione di tipo visibile<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim m_isVisible As FieldInfo = extension.GetType().GetField(&quot;m_isVisible&quot;, BindingFlags.NonPublic &amp; BindingFlags.Instance)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Imposto il valore a False in modo che nasconde la voce<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_isVisible.SetValue(extension, False)<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
End Class</div>
<p><br />
<strong>Codice C#</strong></p>
<div class="code">using Microsoft.Reporting.WebForms; <br />
using Microsoft.SqlServer.ReportingServices2005.Execution<br />
&nbsp;<br />
public class ReportingServicesAbilitaVoci<br />
{<br />
&nbsp;&nbsp;&nbsp; private readonly ServerReport serverReport;<br />
&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// Costruttore della classe - passare il controllo ReportinViewer dopo averlo valorizzato in base al percorso del report<br />
&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;reportViewer&quot;&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; public ReportingServicesAbilitaVoci(Microsoft.Reporting.WebForms.ReportViewer reportViewer)<br />
&nbsp;&nbsp;&nbsp; {<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.serverReport = reportViewer.ServerReport;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public ReportingServicesAbilitaVoci(ServerReport serverReport)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.serverReport = serverReport;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// Funzione che abilita un determinato formato<br />
&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;Formati&quot;&gt;Array di tipo string ES. PDF, EXCEL&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; public void AbilitaFormato(string[] Formati)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (RenderingExtension extension in serverReport.ListRenderingExtensions())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Formati.Length &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Formati.Contains(extension.Name) != true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NascondiVoce(extension);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&gt;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// Funzione che nasconde la voce<br />
&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;extension&quot;&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; private void NascondiVoce(RenderingExtension extension)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Rilevo l'impostazione di tipo visibile<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FieldInfo m_isVisible = extension.GetType().GetField(&quot;m_isVisible&quot;, BindingFlags.NonPublic | BindingFlags.Instance);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Imposto il valore a False in modo che nasconde la voce<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_isVisible.SetValue(extension, false);<br />
&nbsp;&nbsp;&nbsp; }<br />
}</div>
<p></p>
<h3>Effettuare il test</h3>
<p>Ora non ci resta che testare la nostra classe, dalla pagina asp.net, dopo aver valorizzato il controllo ReportViewer, con le dovute impostazioni , nell&rsquo;evento load della pagina, come riportato qui di seguito-.</p>
<p><strong>Codice VB.Net</strong></p>
<div class="code">ReportViewer1.ServerReport.ReportPath = ReportPath</div>
<p><br />
<strong>Codice C#</strong></p>
<div class="code">ReportViewer1.ServerReport.ReportPath = ReportPath;</div>
<p>Il codice riportato qui di seguito &egrave; da utilizzare nell&rsquo;evento load, ma nel caso, che il report, permette la navigazione (tramite collegamenti) ad altri report, dobbiamo inserire il codice nell&rsquo;evento loadcomplete, in modo che ad ogni caricamento, imposta la combobox, altrimenti viene&nbsp;impostata solo nel primo report</p>
<p><strong>Codice VB.Net</strong></p>
<div class="code">Private Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete<br />
Dim report as new ReportingServicesAbilitaVoci (ReportViewer)<br />
Dim formati As String() = {&quot;PDF&quot;, &quot;EXCEL&quot;}<br />
report. AbilitaFormato(formati)<br />
End Sub</div>
<p><br />
<strong>Codice C#</strong></p>
<div class="code">protected void Page_LoadComplete(object sender, EventArgs e) <br />
{<br />
&nbsp;<br />
ReportingServicesAbilitaVoci report = new ReportingServicesAbilitaVoci(ReportViewer1); <br />
&nbsp;<br />
string[] Formati = new string[] { &quot;PDF&quot;, &quot;EXCEL&quot; }; <br />
report.AbilitaFormato(Formati);<br />
}<br />
}</div>
<p>&nbsp;</p>
<p><strong>Conclusioni</strong><br />
<br />
Si &egrave; visto come personalizzare una parte del controllo ReportViewer di reporting Services 2005, visualizzando determinati formati di esportazioni.<br />
La classe pu&ograve; essere estesa con funzionalit&agrave; che permettono altre impostazioni, come la modifica del testo nella casella di esportazione o altro ancora.</p>]]>
</description>
</item>
<item>
<title>Creazione di un sito con una master page in Asp.Net</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_creazione-di-un-sito-con-una-master-page_892.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>30/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione.</h3>
<p>In questo articolo vedremo come creare una master composta da tre colonne. Le master Page possono tornare utili nel momento in cui dobbiamo utilizzare in tutto il sito un particolare modello, stile, per esempio con una parte superiore riguardante l&rsquo;immagine o dei menu laterali.&nbsp; Con le masterpage, una volta impostato lo stile di nostro gradimento, le pagine web avranno tutte lo stesso stile, senza che dobbiamo modificare ad ognuna l&rsquo;aspetto espositivo.<br />
Nell&rsquo;articolo, vedremo come creare una master page, composta nella parte superiore di un immagine definita come intestazione (header) nella parte sinistra, una colonna con voci di menu, mentre nella parte destra alcune immagini o link, al centro il contenuto dell&rsquo;area, che sar&agrave; quello della pagina Aspx.</p>
<h3>Creazione del progetto.</h3>
<p>Dopo aver creato le immagini da applicare nel sito, create un nuovo progetto web, dalla finestra esplora soluzione selezionate il nome del progetto e tramite il tasto destro visualizzate il menu di scelta rapida.&nbsp; Tra le varie voci, scegliete &ldquo;Aggiungi&rdquo; e successivamente la voce nuovo elemento, verr&agrave; aperta una finestra, selezionare l&rsquo;elemento master page, come mostrato in figura 1</p>
<br />
<img height="482" width="797" src="/contenutiupload/13/image/MasterPageFigura1.jpg" alt="" /><br />
<br />
<p><strong>Figura 1</strong><br />
Create sempre nel sito, una cartella contenente le immagini, in modo che abbiamo il sito ordinato, in tale cartella mettiamo le immagini da utilizzare.</p>
<h3>Stesura di codice html.</h3>
<p><br />
Il codice che andremo a scrivere, &egrave; puro html, utilizzando le classiche tabelle. In questo modo, impostiamo un certo aspetto al nostro sito.<br />
La tabella avr&agrave; il compito di predisporre&nbsp; l&rsquo;aspetto del sito, una tabella composta da tre colonne. Nella prima colonna, avremo la parte riguardante l&rsquo;intestazione nella quale si trova un immagine.<br />
Nella riga successiva,&nbsp; le tre colonne ognuna con un preciso scopo. La prima contiene al suo interno un&rsquo;altra tabella, nella quale si trovano delle voci (menu) di tipo collegamento ipertestuale, nella colonna centrale avremo un oggetto di tipo contentPlaceholder, questo controllo di Asp.net ha il compito di inglobale i contenuti delle pagine aspx, In pratica quando si aggiunge una nuova pagina&nbsp; che dipende da una master page, il contenuto presente in quella pagina aspx, sar&agrave; gestito da quel controllo.<br />
Nell&rsquo;ultima colonna si ha un&rsquo;altra tabella, che contiene&nbsp; una sola immagine e dei collegamenti ipertestuali.<br />
Qui di seguito si riporta il codice completo html di quanto.</p>
<div class="code">&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src=&quot;Immagini/Intestazione.jpg&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table id=&quot;TblColonnaMenu&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;default.aspx&quot;&gt;Home&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;informatica.aspx&quot;&gt;Informatica&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;Scienze.aspx&quot;&gt;Scienze&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;contatti.aspx&quot;&gt;Contatti&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align=&quot;center&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID=&quot;ContentPlaceHolder1&quot; runat=&quot;server&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:ContentPlaceHolder&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align=&quot;center&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table id=&quot;ColonnaSinistra&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src=&quot;immagineDestra.Jpg&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;default.aspx&quot;&gt;Sito amico&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href=&quot;default.aspx&quot;&gt;Sito amico 2&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/table<br />
&gt;</div>
<h3>Aggiunta di nuove pagine</h3>
<p>Per aggiungere nuove pagine che dipendono dalla master page , dobbiamo fare click con il tasto destro del mouse sul nome del progetto e selezionare la voce aggiungi e successivamente la voce di menu &ldquo;nuovo Elemento&rdquo;. Nella finestra che viene aperta selezionare il modello di tipo &ldquo;Form Contenuto web&rdquo;. <br />
<br />
<img height="458" width="760" src="/contenutiupload/13/image/MasterPageFigura2.jpg" alt="" /><br />
<br />
<strong>Figura 2<br />
</strong><br />
Questa procedura si applica nel caso che si &egrave; creato un progetto web, altrimenti nel caso che avete selezionato come tipologia di progetto sito web (file-nuovo-&gt;sito web) , sempre tramite la voce di menu di scelta rapida, (tasto destro del mouse sul nome del progetto) selezionare &ldquo;aggiungi nuovo Elemento&rdquo;, nella finestra che viene aperta selezionare WebForm, nella parte inferiore della finestra, oltre ad impostare il nome della pagina ed il linguaggio (VB.Net e C#) applicando la spunta sulla voce &ldquo;Seleziona pagina Master&rdquo; si ha la possibilit&agrave; di selezionare la master page di nostro interesse, nella finestra successiva.<br />
<br />
<img height="498" width="760" src="/contenutiupload/13/image/MasterPageFigura3.jpg" alt="" /><br />
</p>
<p><strong>Figura 3</strong></p>
<p>Nella pagina contenitore, abbiamo in visualizzazione scura e disabilitata la master page, mentre al centro la nostra pagina in cui possiamo aggiungere codice html, testo, controlli aspx ed altro ancora.</p>
<h3>Conclusioni</h3>
<p>Come si &egrave; visto l&rsquo;utilizzo di pagine di tipo mastertpage, possono tornare utile per semplificare la creazione di un sito. L&rsquo;articolo ha voluto fornire alcune conoscenze di base di utilizzo di questo modello, ma si possono utilizzare anche per scenari e situazioni molto pi&ugrave; complessi.</p>]]>
</description>
</item>
<item>
<title>Introduzione al controllo FormView e ObjectDatasource di  Asp.Net</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_introduzione-al-controllo-formview-e-obj_884.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>28/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>In questo articolo vedremo come utilizzare alcuni oggetti messi a disposizione da Asp.Net, in particolare il controllo FormView per la presentazione di una pagina ed il controllo ObjectDatasource per la gestione di una fonte dati.<br />
L&rsquo;articolo fornisce una breve introduzione a questi controlli, che offrono numerose funzionalit&agrave;.</p>
<h3>Creazione del progetto.</h3>
<p>Si crea un nuovo progetto Asp.Net, in particolare una web application. Dopo aver creato il progetto, si aggiunge una classe, essa avr&agrave; lo scopo di&nbsp;gestire la fonte dati.<br />
Dal menu di scelta rapida della finestra &ldquo;Esplora Soluzione&rdquo;, selezioniamo la voce &ldquo;Aggiungi&rdquo;&nbsp; e successivamente la voce classe.<br />
La classe che si chiamer&agrave; &ldquo;AccessoDati&rdquo;, e conterr&agrave; un metodo che permette la selezione dei dati da una tabella.<br />
Qui di seguito si riporta il listato di codice di tale classe</p>
<p><br />
<strong>VB.Net</strong></p>
<div class="code">Imports System.Data.SqlClient<br />
Public Class AccessoDati<br />
&nbsp;&nbsp;&nbsp; 'Classe per la gestione dei dati<br />
&nbsp;&nbsp;&nbsp; Public Function OttieniDati() As DataTable<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Con As String = &quot;Data Source=.;Initial Catalog=test;Integrated Security=SSPI;&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Sql As String = &quot;SELECT * FROM Anagrafica&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim sqlDta As New SqlDataAdapter(Sql, Con)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttDati As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlDta.Fill(dttDati)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return dttDati<br />
&nbsp;&nbsp;&nbsp; End Function<br />
End Class</div>
<p><strong>C#</strong></p>
<div class="code">using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Web;<br />
using System.Data.SqlClient;<br />
using System.Data;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; public class AccessoDati<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DataTable OttieniDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Con = &quot;Data Source=.;Initial Catalog=test;Integrated Security=SSPI;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Sql = &quot;SELECT * FROM Anagrafica&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlDataAdapter sqlDta = new SqlDataAdapter(Sql, Con);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttDati = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlDta.Fill(dttDati);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dttDati;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</div>
<p>&nbsp;</p>
<h3>Creazione della pagina.</h3>
<p>Ora che abbiamo definito la gestione dei dati, non ci resta che aggiungere nella pagina i vari controlli.<br />
Nel nostro caso utilizzeremo il controllo GridView , un controllo formview ed un controllo ObjdataSource.<br />
In visualizzazione progettazione, inseriamo nella pagina un controllo objectDatasource, situato nella categoria dati. Posizionando il mouse in prossimit&agrave; del controllo viene visualizzato uno smartTag, a questo punto, selezioniamo la voce, &ldquo;Configurazione origine dati&rdquo;, in cui verr&agrave; aperto uno wizard.<br />
Va ricordato che per visualizzare la classe, dobbiamo compilare la soluzione, in modo che viene generata nella cartella Bin la libreria di accesso ai dati.<br />
Nella finestra che viene aperta (figura 1) selezionare la classe di accesso dati.<br />
<img height="554" width="752" src="http://www.iprogrammatori.it/contenutiupload/13/image/FormViewFigura1.jpg" alt="" /><br />
<strong>Figura 1</strong><br />
<br />
Dopo averla selezionare, fare click con il pulsante avanti.<br />
Verr&agrave; aperta una finestra (figura 2) nella quale visualizza il metodo della classe, selezionare il metodo per il caricamento dei dati, nel nostro caso, il metodo &ldquo;OttieniDati&rdquo;.<br />
<br />
<br />
<img height="554" width="752" src="/contenutiupload/13/image/FormViewFigura2.jpg" alt="" /><br />
<strong>Figura 2</strong></p>
<p>A questo punto fate click sul pulsante Fine.<br />
Dalla casella degli strumenti, sempre nella categoria &ldquo;Dati&rdquo; selezioniamo il controllo FormView e trasciniamo nella pagina Aspx.<br />
Avviciniamo il mouse in prossimit&agrave; di tale controllo e tramite il suo smart tag, ossia l&rsquo;icona posta sulla parte destra, selezioniamo la voce &ldquo;ModificaModelli&rdquo; selezionando dalla casella combinata la voce ItemTemplate.<br />
A questo punto inseriamo il controllo GridView nella sezione ItemTemplate del controllo FormView.<br />
Selezioniamo il controllo GridView e tramite lo smart tag, posto sulla destra, selezioniamo nella casella di combina relativa all&rsquo;origine dati, la fonte dati riguardante il controllo ObjectDataSource. Stessa cosa anche per il controllo FormView, in cui possiamo gestire la paginazione ed altre informazioni di tale controllo.<br />
A questo punto, se viene eseguito il progetto vedremo il caricamento dei dati&nbsp;nella griglia, senza aver scritto codice .Net.</p>
<p><strong>Conclusioni</strong><br />
L&rsquo;articolo ha voluto fornire le basi riguardante il contorllo objectDataSource e FormView, inoltre come si &egrave; visto, tramite i vari wizard e controlli possiamo creare in poco tempo, applicazioni con accesso ai dati, senza scrivere codice .Net</p>]]>
</description>
</item>
<item>
<title>Asp.Net Creazione di un gridView con espansione dei dati</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-creazione-di-un-gridview-con-espa_874.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>26/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
Vedremo come creare un gridView, nel quale il&nbsp;singolo record, contiene altri record figli, ossia appartenemente al record selezionato.&nbsp; Il tutto come mostrato in figura 1<br />
<br />
<img height="228" width="355" alt="" src="/contenutiupload/13/image/GridViewEspansioneFigura1.JPG" /><br />
<br />
<br />
<p>Supponiamo di avere una situazione in cui si ha una grande societ&agrave; con diversi reparti (marketing, it, vendite, ecc) e per ogni reparto si trovano un certo numero di dipendenti.<br />
L&rsquo;articolo, illustra la tecnica di come rendere visibili tali dati, in maniera gradevole, ossia per ogni reparto visualizzare i dipendenti per quel settore. Tramite un immagine (+ o -) possiamo espandere la riga del reparto e vedere i dipendenti, oppure nasconderli.</p>
<h3>Creazione del codice javascript e HTML</h3>
<p>Dopo aver aggiunto al progetto delle immagini (+ e -), dobbiamo inserire un controllo gridview, nel codice html, utilizzeremo del codice Javascript per gestire l&rsquo;immagine relativa alla possibilit&agrave; di espandere o nascondere i dati relativi ai dipendenti.<br />
Qui di seguito si riporta il codice Javascript, per le suddette operazioni.</p>
<div class="code">&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br />
&nbsp;&nbsp;function CambiaImmagine(ClientId,IdTable)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if (document.getElementById(ClientId).getAttribute(&quot;src&quot;).indexOf(&quot;piu.gif&quot;) !=-1)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(ClientId).setAttribute(&quot;src&quot;,&quot;img/meno.gif&quot;);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(ClientId).setAttribute(&quot;src&quot;,&quot;img/piu.gif&quot;);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;var aa = document.getElementById(IdTable).style;<br />
&nbsp;&nbsp;&nbsp;if(aa.display==&quot;none&quot;) aa.display=&quot;block&quot;;<br />
&nbsp;&nbsp;&nbsp;else aa.display=&quot;none&quot;;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;</div>
<p><br />
Dopo aver aggiunto il controllo gridView, aggiungere due colonne di tipo tamplate. Nel primo template si avr&agrave; un controllo di tipo imagebutton, che visualizza il simbolo + o &ndash; a seconda della circostanza.<br />
Mentre nell&rsquo;altro modello, inseriamo due controlli (textbox e label) per visualizzare la descrizione dell&rsquo;ufficio ed il codice univoco dell&rsquo;ufficio.<br />
All&rsquo;interno si inserisce una tabella, per la gestione delle informazioni, con al suo interno un controllo GridView.<br />
Questo controllo griglia, avr&agrave; il compito di contenere le informazioni relativi ai dipendenti.<br />
Riportiamo il codice Html della form</p>
<div class="code">&lt;asp:GridView ID=&quot;grvEspansione&quot; runat=&quot;server&quot; AutoGenerateColumns=&quot;False&quot; CellPadding=&quot;4&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ForeColor=&quot;#333333&quot; GridLines=&quot;None&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onrowdatabound=&quot;grvEspansione_RowDataBound&quot; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowStyle BackColor=&quot;#EFF3FB&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ImageButton ImageUrl=&quot;img/piu.gif&quot; CommandName=&quot;Expand&quot; ID=&quot;btnEspandi&quot; runat=&quot;server&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:ImageButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Ufficio&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Label ID=&quot;lblIdUfficio&quot; runat=&quot;server&quot; Text='&lt;%# Convert.ToString(DataBinder.Eval(Container.DataItem,&quot;Ufficio&quot;)) %&gt;'&gt;&lt;/asp:Label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TextBox ID=&quot;txtIdUfficio&quot; Text='&lt;%# Convert.ToString(DataBinder.Eval(Container.DataItem,&quot;IdUfficio&quot;)) %&gt;'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; runat=&quot;server&quot; Visible=&quot;false&quot;&gt;&lt;/asp:TextBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Table ID=&quot;TabImpiegati&quot; runat=&quot;server&quot; HorizontalAlign=&quot;Center&quot; Style=&quot;display: none;&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TableRow&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TableCell Width=&quot;5&quot;&gt;&amp;nbsp;&lt;/asp:TableCell&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TableCell ColumnSpan=&quot;3&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:GridView ID=&quot;grdImpiegati&quot; runat=&quot;server&quot; AutoGenerateColumns=&quot;false&quot; HeaderStyle-Font-Names=&quot;Verdana&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HeaderStyle-Font-Size=&quot;11pt&quot; RowStyle-ForeColor=&quot;Black&quot;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RowStyle-Font-Names=&quot;Verdana&quot; RowStyle-Font-Size=&quot;10pt&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Codice Impiegato&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Label ID=&quot;lblIdImpiegato&quot; runat=&quot;server&quot; Text='&lt;%# Convert.ToString(DataBinder.Eval(Container.DataItem,&quot;IdUfficio&quot;)) %&gt;'&gt;&lt;/asp:Label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Nome&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Label ID=&quot;lblNome&quot; runat=&quot;server&quot; Text='&lt;%# Convert.ToString(DataBinder.Eval(Container.DataItem,&quot;Nome&quot;)) %&gt;'&gt;&lt;/asp:Label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Cognome&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Label ID=&quot;lblCognome&quot; runat=&quot;server&quot; Text='&lt;%# Convert.ToString(DataBinder.Eval(Container.DataItem,&quot;Cognome&quot;)) %&gt;'&gt;&lt;/asp:Label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:GridView&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TableCell&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TableRow&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:Table&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FooterStyle BackColor=&quot;#507CD1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;PagerStyle BackColor=&quot;#2461BF&quot; ForeColor=&quot;White&quot; HorizontalAlign=&quot;Center&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SelectedRowStyle BackColor=&quot;#D1DDF1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;#333333&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HeaderStyle BackColor=&quot;#507CD1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;EditRowStyle BackColor=&quot;#2461BF&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;AlternatingRowStyle BackColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/asp:GridView&gt;</div>
<h3>Stesura Codice.</h3>
<p>Terminata la creazione della parte web, si passa in visualizzazione codice<br />
Il linguaggio utilizzato sar&agrave; VB.Net e C#</p>
<p>Si crea una funzione per il caricamento dei dati, qui di seguito si riporta il caricamento dei dati relativo alla prima griglia, quella che contiene i nomi dei vari reparti.<br />
<br />
<br />
<strong>VB.Net</strong></p>
<div class="code">Private Sub CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim CodiceUfficio As New DataColumn(&quot;IdUfficio&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim DescrizioneUfficio As New DataColumn(&quot;Ufficio&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim riga As DataRow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttTabella As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(CodiceUfficio)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(DescrizioneUfficio)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Ufficio&quot;) = &quot;Marketing&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Ufficio&quot;) = &quot;IT&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Ufficio&quot;) = &quot;Vendite&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtsDati As New DataSet()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtsDati.Tables.Add(dttTabella)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvEspansione.DataSource = dtsDati<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvEspansione.DataBind()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p>&nbsp;<br />
<br />
<strong>C#<br />
</strong></p>
<div class="code">private void CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn CodiceUfficio = new DataColumn(&quot;IdUfficio&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn DescrizioneUfficio = new DataColumn(&quot;Ufficio&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow riga;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttTabella = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(CodiceUfficio);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(DescrizioneUfficio);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Ufficio&quot;] = &quot;Marketing&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Ufficio&quot;] = &quot;IT&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Ufficio&quot;] = &quot;Vendite&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSet dtsDati = new DataSet();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtsDati.Tables.Add(dttTabella);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvEspansione.DataSource = dtsDati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvEspansione.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>A seguire riportiamo una funzione nella quale contiene i dati relativi ai dipendenti e quindi alla griglia figlia.<br />
VB.Net</p>
<p></p>
<div class="code">Private Function CaricaImpiegati(ByVal IdUfficio As String) As DataView<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim IdUff As Integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IdUff = CType(IdUfficio, Integer)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim CodiceUfficio As New DataColumn(&quot;IdUfficio&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Nome As New DataColumn(&quot;Nome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Cognome As New DataColumn(&quot;Cognome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim riga As DataRow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttTabella As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(CodiceUfficio)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Nome&quot;) = &quot;Marco&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Cognome&quot;) = &quot;Toni&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Nome&quot;) = &quot;Emanuele&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Cognome&quot;) = &quot;Mattei&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Nome&quot;) = &quot;Max&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Cognome&quot;) = &quot;Urioni&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;IdUfficio&quot;) = 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Nome&quot;) = &quot;Emanuele&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(&quot;Cognome&quot;) = &quot;Foti&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtvDati As New DataView<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.DefaultView.RowFilter = &quot;IdUfficio =&quot; &amp; IdUff<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtvDati = dttTabella.DefaultView<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return dtvDati<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; End Function</div>
<p><strong>C#</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<div class="code">private DataView CaricaImpiegati(String IdUfficio)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int IdUff = Convert.ToInt32(IdUfficio);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn CodiceUfficio = new DataColumn(&quot;IdUfficio&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Nome = new DataColumn(&quot;Nome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Cognome = new DataColumn(&quot;Cognome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow riga;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttTabella = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(CodiceUfficio);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Nome&quot;] = &quot;Marco&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Cognome&quot;] = &quot;Toni&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Nome&quot;] = &quot;Emanuele&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Cognome&quot;] = &quot;Mattei&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Nome&quot;] = &quot;Max&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Cognome&quot;] = &quot;Urioni&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;IdUfficio&quot;] = 3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Nome&quot;] = &quot;Emanuele&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[&quot;Cognome&quot;] = &quot;Foti&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataView dtvDati = new DataView();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.DefaultView.RowFilter = &quot;IdUfficio =&quot; + IdUff;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtvDati = dttTabella.DefaultView;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dtvDati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Questa funzione viene richiamata nell&rsquo;evento rowDataBound, del controllo padre, nel quale rileva I dati in relazione ai dipendenti che fanno parte degli uffici.<br />
Vediamo qui di seguito il metodo rowDataBound, nel quale carica i dati per il controllo griglia figla. Dopo aver rilevato il codice identificativo dell&rsquo;ufficio, effettua una query per verificare se rilevare i dati dell&rsquo;ufficio che si sta caricando. Si imposta per ogni pulsante immagine, la funzione javascript per il cambiamento dell&rsquo;immagine.<br />
<br />
<strong>VB.Net</strong></p>
<div class="code">&nbsp;&nbsp; Protected Sub grvEspansione_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grvEspansione.RowDataBound<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If e.Row.RowType = DataControlRowType.DataRow Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DirectCast(e.Row.FindControl(&quot;btnEspandi&quot;), ImageButton).Attributes(&quot;onClick&quot;) = &quot;return CambiaImmagine('&quot; + DirectCast(e.Row.FindControl(&quot;btnEspandi&quot;), ImageButton).ClientID + &quot;','&quot; + DirectCast(e.Row.FindControl(&quot;TabImpiegati&quot;), Table).ClientID + &quot;')&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim IdUfficio As String = DirectCast(e.Row.FindControl(&quot;txtIdUfficio&quot;), TextBox).Text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim grvImpiegati As GridView<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati = DirectCast(e.Row.Cells(grvEspansione.Columns.Count - 1).FindControl(&quot;grdImpiegati&quot;), GridView)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtvDati As DataView = CaricaImpiegati(IdUfficio)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati.DataSource = dtvDati<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati.DataBind()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If dtvDati.Count &lt; 1 Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DirectCast(e.Row.Cells(0).FindControl(&quot;btnEspandi&quot;), ImageButton).Visible = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong>C#</strong></p>
<div class="code">protected void grvEspansione_RowDataBound(object sender, GridViewRowEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.Row.RowType == DataControlRowType.DataRow)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((ImageButton)e.Row.FindControl(&quot;btnEspandi&quot;)).Attributes[&quot;onClick&quot;] = &quot;return CambiaImmagine('&quot; + ((ImageButton)e.Row.FindControl(&quot;btnEspandi&quot;)).ClientID + &quot;','&quot; + ((Table)e.Row.FindControl(&quot;TabImpiegati&quot;)).ClientID + &quot;')&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string IdUfficio = ((TextBox)e.Row.FindControl(&quot;txtIdUfficio&quot;)).Text;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView grvImpiegati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati = (System.Web.UI.WebControls.GridView)e.Row.Cells[grvEspansione.Columns.Count - 1].FindControl(&quot;grdImpiegati&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataView dtvDati = CaricaImpiegati(IdUfficio);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati.DataSource = dtvDati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grvImpiegati.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dtvDati.Count &lt; 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((ImageButton)e.Row.Cells[0].FindControl(&quot;btnEspandi&quot;)).Visible = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3>Conclusioni.</h3>
<p>L&rsquo;articolo ha voluto illustrare una tecnica di come creare un gridView nel quale espandere i sotto record di un riga principale, da cui dipendono, molto utile, in certi scenari.<br />
Con il pulsante immagine, possiamo visualizzare il dettaglio dei dati o nasconderli.<br />
Tramite la parola Download potete scaricare il progetto per entrambi i linguaggi.<br />
<br />
<a href="/contenutiupload/13/file/GridViewEspansione.zip">Download</a></p>]]>
</description>
</item>
<item>
<title>Asp.Net inviare tramite email i dati di un GridView</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-inviare-tramite-email-i-dati-di-u_873.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>15/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
Vedremo una tecnica di come inviare un email, in cui nel corpo del messaggio &egrave; presente il controllo gridview.<br />
Va ricordato che l&rsquo;email dev&rsquo;essere spedita in formata html, l&rsquo;email che si ricever&agrave; &egrave; simile a quella inviata nella figura 1<br />
<br />
<br />
<img height="265" width="700" alt="" src="/contenutiupload/13/image/GridViewInviaEmailFigura1.PNG" /><br />
<br />
<br />
<strong>Figura 1<br />
</strong><br />
<h3>Creazione del progetto</h3>
<p>Dopo aver creato un progetto di tipo Web application, inserire nel progetto un controllo gridview ed un pulsante, il quale avr&agrave; il compito di inviare l&rsquo;email.</p>
<h3>Stesura del codice</h3>
<p>Ora passiamo in visualizzazione codice, prima di tutto, dobbiamo aggiungere gli spazi dei nomi per la gestione dell&rsquo;email e dei dati.<br />
Di seguito si riporta lo spazio dei nomi per il linguaggio di programmazione VB.Net e C#</p>
<p><strong>VB.Net<br />
</strong></p>
<div class="code">Imports System.Data<br />
Imports System.Net<br />
Imports System.Net.Mail</div>
<p><strong>C#<br />
</strong></p>
<div class="code">using System.Data;<br />
using System.Net;<br />
using System.Net.Mail;</div>
<p><br />
Occorre fare l&rsquo;ovveride dell&rsquo;evento VerifyRenderingInServerForm in questo modo possiamo ottenere il codice html del controllo gridview.<br />
Di seguito si riporta la sintassi di tale operazione.<br />
<br />
<br />
<strong>VB.Net<br />
</strong></p>
<div class="code">Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<strong>C#<br />
</strong></p>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void VerifyRenderingInServerForm(Control control)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
In questo modo, non verr&agrave; generata nessuna eccezione<br />
Ora dobbiamo creare la funzione per il caricamento dei dati nella griglia.<br />
Qui di seguito la funzione per il caricamento dei dati per il controllo GridView</p>
<p><br />
<strong>VB.Net</strong></p>
<div class="code">Private Sub CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Nome As New DataColumn(&quot;Nome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Cognome As New DataColumn(&quot;Cognome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim riga As DataRow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttTabella As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;Maffei&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;maffei3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;maffei2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttTabella<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<br />
<strong>C#</strong></p>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Nome = new DataColumn(&quot;Nome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Cognome = new DataColumn(&quot;Cognome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow riga;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttTabella = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;Maffei&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa2&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;maffei3&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa3&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;maffei2&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttTabella;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Questa funzione verr&agrave; richiamata nell&rsquo;evento load della form<br />
Ora dobbiamo creare una funzione, che converte il controllo griglia&nbsp;in html, o meglio una stringa con al suo interno del codice html.<br />
Qui di seguito&nbsp; si riporta la funzione&nbsp; che estrapola dal controllo griglia il codice html.<br />
<br />
<br />
<strong>VB.Net</strong></p>
<div class="code">Private Function TrasformaInTesto() As String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Testo As String = [String].Empty<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim sw As New System.IO.StringWriter()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim hw As New HtmlTextWriter(sw)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderBeginTag(HtmlTextWriterTag.Html)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderBeginTag(HtmlTextWriterTag.Body)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.RenderControl(hw)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderEndTag()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderEndTag()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.Flush()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Testo = sw.ToString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Finally<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.Close()<br />
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sw.Close()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return Testo<br />
&nbsp;&nbsp;&nbsp; End Function</div>
<p><strong>C#</strong></p>
<div class="code">private string TrasformaInTesto()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Testo = String.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.StringWriter sw = new System.IO.StringWriter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HtmlTextWriter hw = new HtmlTextWriter(sw);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderBeginTag(HtmlTextWriterTag.Html);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderBeginTag(HtmlTextWriterTag.Body);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.RenderControl(hw);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderEndTag();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.RenderEndTag();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.Flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Testo = sw.ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hw.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sw.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Testo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>A questo punto siamo giunti quasi alla conclusione di questo articolo. Ora non resta che scrivere il codice per l&rsquo;invio dell&rsquo;email, che verr&agrave; applicato al controllo pulsante.<br />
Dopo aver rilevato il testo html del controllo griglia, tramite l&rsquo;oggetto di tipo MailMessage, impostiamo gli indirizzi email di colui che invia, riceve l&rsquo;email, il testo dell&rsquo;oggetto dell&rsquo;email ed il testo del corpo. La propriet&agrave; ISBodyHtml impostata a True, permette di inviare l&rsquo;email in formato html e quindi il destinatario visualizzer&agrave; nel corpo del messaggio, la griglia come si vede nella pagina web.<br />
Tramite l&rsquo;oggetto di tipo SmtpClient, dopo aver impostato il server email, utilizzando il metodo send viene iinviato il messaggio.</p>
<p>Qui di seguito il codice di tali operazioni.<br />
<br />
<br />
<br />
<strong>VB.Net</strong></p>
<div class="code">Protected Sub BtnInvia_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnInvia.Click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim testo As String = TrasformaInTesto()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim email As New MailMessage(&quot;<a href="mailto:emanuelemattei@dominio.it">emanuelemattei@dominio.it</a>&quot;, &quot; <a href="mailto:emanuelemattei@dominio.it">emanuelemattei@dominio.it</a> &quot;, &quot;Oggetto&quot;, testo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email.IsBodyHtml = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim smtp As New SmtpClient(&quot;ServerMail&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtp.Send(email)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(ex.Message)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong>C#</strong></p>
<div class="code">protected void Button1_Click(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string testo = TrasformaInTesto();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailMessage email = new MailMessage(&quot;<a href="mailto:emanuelemattei@dominio.it">emanuelemattei@dominio.it</a> &quot;, &quot; <a href="mailto:emanuelemattei@dominio.it">emanuelemattei@dominio.it</a> &quot;, &quot;Oggetto&quot;, testo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email.IsBodyHtml = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SmtpClient smtp = new SmtpClient(&quot;ServerMail&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtp.Send(email);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(ex.Message);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3>Conclusioni</h3>
<p>Abbiamo visto come inviare tramite email, le informazioni contenute in un controllo griglia, riportando nel corpo del messaggio il medesimo controllo. Tramite la parola download potete scaricare il file di progetto per entrambi i linguaggi.<br />
<br />
<br />
<a href="/contenutiupload/13/file/GridViewInviaInEmail.zip">Download</a></p>]]>
</description>
</item>
<item>
<title>Creare una colonna di tipo DropDownlist in un controllo GridView</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_creare-una-colonna-di-tipo-dropdownlist-_872.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>12/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
Nell&rsquo;articolo viene descritta la tecnica di come inserire in un controllo gridview una colonna di tipo DropDownList, e tramite un controllo di tipo button, rilevare i valori di ogni riga della griglia.<br />
Inserire nella pagina web, un controllo griglia ed un controllo button, il tutto come mostrato in figura 1<br />
<br />
<br />
<img height="258" width="221" src="/contenutiupload/13/image/GridViewDropDownListaFigura1.PNG" alt="" /><br />
<br />
<p>Figura 1</p>
<h3>Stesura di codice</h3>
<p>Aggiungiamo al controllo griglia, tre colonne due di tipo BoundField, mentre una di tipo templateField.<br />
Nella colonna templateField, inseriamo un controllo di tipo dropDownlist, qui di seguito si riporta il codice Html delle colonne.</p>
<div class="code">&lt;Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundField DataField=&quot;Nome&quot; HeaderText=&quot;Nome&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundField DataField=&quot;Cognome&quot; HeaderText=&quot;Cognome&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Citt&agrave;&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:DropDownList ID=&quot;DdlCitta&quot; runat=&quot;server&quot;&gt;&lt;/asp:DropDownList&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Columns&gt;</div>
<p>Come si vede dal codice, le prime due colonne, visualizzeranno i valori dei campi (nome e cognome) che verranno caricati nella griglia, mentre nella clona templateField, visualizzer&agrave; una dropDonlist.<br />
Terminato ci&ograve;, occorre caricare dei dati, qui di seguito si riporta una funzione che carica un oggetto di tipo datatable, in cui si trovano alcuni dati.</p>
<p><strong>VB.Net</strong></p>
<div class="code">Private Sub CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Nome As New DataColumn(&quot;Nome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Cognome As New DataColumn(&quot;Cognome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Citta As New DataColumn(&quot;Citta&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim riga As DataRow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttTabella As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Citta)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;Maffei&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(2) = &quot;Roma&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;maffei3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(2) = &quot;Milano&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;EMa3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(1) = &quot;maffei2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(2) = &quot;Palermo&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttTabella<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<br />
<strong>C#<br />
</strong></p>
<div class="code">&nbsp; private void CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Nome = new DataColumn(&quot;Nome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Cognome = new DataColumn(&quot;Cognome&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Citta = new DataColumn(&quot;Citta&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow riga;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttTabella = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Nome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Cognome);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Citta);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;Maffei&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[2] = &quot;Roma&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa2&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;maffei3&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[2] = &quot;Milano&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;EMa3&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[1] = &quot;maffei2&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[2] = &quot;Palermo&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttTabella;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>La funzione viene richiamata nell&rsquo;evento load della pagina</p>
<p>Ora si deve creare una funzione, che restituisce un oggetto di tipo datable, che viene utilizzata per il caricamento delle varie DropDownList situate all&rsquo;interno del controllo griglia.</p>
<p><br />
<strong>VB.Net<br />
</strong></p>
<div class="code">Private Function CaricaCitta() As DataTable<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim Nome As New DataColumn(&quot;Citta&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim Cognome As New DataColumn(&quot;Cognome&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Citta As New DataColumn(&quot;Citta&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim riga As DataRow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttTabella As New DataTable()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'dttTabella.Columns.Add(Nome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'dttTabella.Columns.Add(Cognome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Citta)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(0) = &quot;EMa&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(1) = &quot;Maffei&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;Roma&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(0) = &quot;EMa2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(1) = &quot;maffei3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;Milano&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(0) = &quot;EMa3&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'riga(1) = &quot;maffei2&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga(0) = &quot;Palermo&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return dttTabella<br />
&nbsp;&nbsp;&nbsp; End Function</div>
<p><br />
<strong>C#<br />
</strong></p>
<div class="code">&nbsp; private DataTable CaricaCitta()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn Citta = new DataColumn(&quot;Citta&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow riga;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttTabella = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Columns.Add(Citta);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;Roma&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;Milano&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga = dttTabella.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga[0] = &quot;Palermo&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttTabella.Rows.Add(riga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dttTabella;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Nell&rsquo;evento RowDataBound, dobbiamo caricare le dropDowlist e poi impostargli il valore di appartenenza al record di cui fa parte.<br />
Con l&rsquo;oggetto di tipo DataRowView, rilevo il valore della colonna Citta, della sorgente dati di cui &egrave; stato caricato il gridView, in questo modo, ho il valore della riga di una determinata colonna, questo valore si utilizza per impostare il valore della dropDowList.<br />
<br />
<br />
<br />
<strong>VB.Net</strong></p>
<div class="code">Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If e.Row.RowType = DataControlRowType.DataRow Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtvCitta As DataRowView = CType(e.Row.DataItem, DataRowView)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim citta As String = dtvCitta(&quot;Citta&quot;).ToString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dttCitta As DataTable = CaricaCitta()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim ddlcitta As DropDownList = DirectCast(e.Row.FindControl(&quot;DdlCitta&quot;), DropDownList)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataSource = dttCitta<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ddlcitta.DataMember = &quot;Citta&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataValueField = &quot;Citta&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataBind()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.SelectedValue = citta<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</div>
<p><strong>C#<br />
</strong></p>
<div class="code">protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.Row.RowType == DataControlRowType.DataRow)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRowView dtvCitta = (DataRowView)e.Row.DataItem;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string citta = dtvCitta[&quot;Citta&quot;].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataTable dttCitta = CaricaCitta();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DropDownList ddlcitta = (DropDownList)e.Row.FindControl(&quot;DdlCitta&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataSource = dttCitta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataValueField = &quot;Citta&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddlcitta.SelectedValue = citta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>&nbsp;</p>
<p>Ora non resta che rilevare il valore della combo box, nell&rsquo;evento click del pulsante, si fa un ciclo per ogni riga, e si visualizza a video il valore.<br />
Qui di seguito si riporta il codice delle suddette operazioni</p>
<p><strong>VB.Net</strong></p>
<div class="code">For contaRighe As Integer = 0 To GridView1.Rows.Count - 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Citta As String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Citta = DirectCast(GridView1.Rows(contaRighe).FindControl(&quot;DdlCitta&quot;), DropDownList).SelectedItem.Text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(Citta + &quot; &quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</div>
<p><br />
<br />
<strong>C#</strong></p>
<div class="code">for (int contaRighe = 0; contaRighe &lt; GridView1.Rows.Count; contaRighe++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Citta = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Citta = ((DropDownList)GridView1.Rows[contaRighe].FindControl(&quot;DdlCitta&quot;)).SelectedItem.Text&nbsp; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(Citta + &quot; &quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3>Conclusioni</h3>
<p>Abbiamo visto come impostare in un controllo gridview una colonna di tipo dropDownlist, tramite la parola download potete scaricare il sorgente utilizzato in questo articolo sia per il linguaggio vb.Net che per C#.<br />
<br />
<a href="/contenutiupload/13/file/GridViewDropDownLista.zip">Download</a></p>]]>
</description>
</item>
<item>
<title>Recensione libro: Le basi di dati spiegato a mia nonna</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-le-basi-di-dati-spiegat_917.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>07/04/2010 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp;
<p>&nbsp;</p>
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Mario De Ghetto</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>Euro 35,00</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 384 pag - 17x24 bn</div>
            </td>
        </tr>
        <tr>
            <td width="146">Numero Edizione</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">1</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>2010</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>9788882338220</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiana</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>digital lifestyle pro</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p class="MsoNormal">Le basi dati sono fondamentali per quelle applicazione che devono gestire diverse informazioni. Il libro Le basi di Dati spiegato a mia nonna <a href="http://www.fag.it/scheda.aspx?ID=31657">http://www.fag.it/scheda.aspx?ID=31657</a>&nbsp;, edito della casa editrice FAG <a href="http://www.fag.it/">http://www.fag.it/</a> ,<span>&nbsp;&nbsp; </span>fornisce in maniera esauriente e molto semplice il funzionamento dei database. L&rsquo;autore del libro, Mario De Ghetto,<span>&nbsp; </span>propone anche per questo libro una spiegazione molto semplice e curata per coloro che<span>&nbsp; </span>non hanno dimestichezza con le base dati. La formula utilizzata &egrave; la stesa dei precedenti libri che ha pubblicato l&rsquo;autore per questa casa editrice. Con la frase &ldquo;Spiegate a mia nonna&rdquo; fa comprendere come il libro tratta l&rsquo;argomento in maniera molto semplice per facilitarne la comprensione anche a coloro che non hanno una buona padronanza dell&rsquo;informatica.</p>
<p class="MsoNormal">Mario De Ghetto &egrave; un MVP in Visual Basic Net ha scritto diversi libri per la casa editrice FAG e nel suo blog&nbsp;<a href="http://community.dotnetwork.it/mario.deghetto/Default.aspx">http://community.dotnetwork.it/mario.deghetto/Default.aspx</a>&nbsp;o qui&nbsp;<span style="font-family: 'Calibri','sans-serif'; color: rgb(31, 73, 125); font-size: 11pt;"><font id="tabBobyFont"><a href="http://wm4.email.it/webmail/wm_5/redir.php?http://deghetto.wordpress.com/" target="_blank">http://deghetto.wordpress.com/</a></font></span>&nbsp;propone interessanti trucchi e segnalazione in ambito della programmazione .Net ed in particolar modo sul linguaggio di programmazione Visual Basic&nbsp;Net.<span>&nbsp; </span>Collabora con diverse community italiane.<br />
<br />
Il libro non contiene nessun cd-rom o dvd, i sorgenti del libro si possono scaricare dal seguente sito <a href="http://deghetto.wordpress.com/2010/01/12/libro-le-basi-di-dati-spiegate-a-mia-nonna/">http://deghetto.wordpress.com/2010/01/12/libro-le-basi-di-dati-spiegate-a-mia-nonna/</a></p>
<p>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo libro.</p>
<p class="MsoNormal">Nel primo capitolo, molto breve, viene fornita al lettore l&rsquo;importanza dei database nel software, il capitolo vuole fornire indicazioni di quando usare un database e perch&eacute; utilizzarlo.</p>
<p class="MsoNormal">Al termine del capitolo si trovano una serie di domande ed esercizi, quest&rsquo;ultimo caso riguardano il linguaggio di programmazione Visual Basic Net</p>
<p class="MsoNormal">Nel secondo capito viene fornita una valida introduzione ai database, illustrando la storia, partendo dalla nascita e di come si sono evoluti, fino ad arrivare ai nostri giorni. <span>&nbsp;</span>Al termine del capitolo si trovano domande relative al capitolo</p>
<p class="MsoNormal">Con il terzo capitolo sono forniti le nozioni di base riguardante i database relazionali. Nel capitolo sono forniti ottime indicazioni sulla struttura e funzionalit&agrave; dei database di tipo relazionali, inoltre nel capitolo si trovano diverse immagini e tabelle per far comprendere in maniera molto chiara l&rsquo;argomento che si sta trattando. Il capitolo affronta egregiamente il tema trattato.</p>
<p class="MsoNormal">Il capitolo 4, fornisce come nel precedente capitolo molta teoria, in questo capitolo sono fornite nozioni basilari sulla gestione dei dati. Nel capitolo viene spiegato il funzionamento e significato della selezione dei dati, e di come elaborare i dati con due o pi&ugrave; tabelle.</p>
<p class="MsoNormal">Con il quinto capitolo si passa finalmente alla pratica. Questo capitolo a differenza di quelli precedenti, fornisce indicazioni importanti ed esempi pratici di come utilizzare un database relazionale. Nelle prime pagine viene fornita una buona introduzione al linguaggio SQL, la storia ed il <span>&nbsp;</span>significato.</p>
<p class="MsoNormal">Terminata la parte introduttiva , si passa alla pratica illustrando un primo esempio di sql riguardante la creazione di una tabella. Continuando viene fatta una panoramica su alcuni parti interessanti di un database, come i commenti, gli operatori, le funzioni ed altro ancora.</p>
<p class="MsoNormal">A met&agrave; capitolo l&rsquo;autore del libro entra nel dettaglio del linguaggio SQL, illustrando diversi esempi tra i quali, la creazione e cancellazione di un database, la creazione modifica e cancellazione di una tabella, vista, indice, account ed utente- Un capitolo con diversi esempi di codice.</p>
<p class="MsoNormal">Il capitolo 6, si passa ad alcune istruzioni sql, che permettono la gestione dei dati. Nelle prime pagine viene illustrato l&rsquo;utilizzo dell&rsquo;istruzione Select, con diversi esempi, utilizzando alcune clausole. <span>&nbsp;&nbsp;</span>Esempi di codice molto interessanti. <span>&nbsp;</span>Nella parte conclusiva del capito, si passa ad altre istruzioni SQl, brevi esempi per avvicinare al lettore a questo linguaggio. Vedremo la modifica, cancellazione ed inserimento dei dati.</p>
<p class="MsoNormal">Nel capitolo 7, vedremo come si progetta analizza e si crea un database. Il capitolo vuole porre al lettore l&rsquo;attenzione sull&rsquo;importanza della progettazione di un database e guidarlo anche nel disegno di una base dati, fornendo anche delle ottime nozioni sullo schema Entity Relationship E/R.</p>
<p class="MsoNormal">Anche nel capitolo ottavo continua la parte riguardante la progettazione di un database, anche in questo capitolo sono forniti interessanti linee guida riguardante la progettazione di una base dati, ed il ruolo delle relazioni tra due o pi&ugrave; tabelle.</p>
<p class="MsoNormal">Il capitolo nono, a differenza dei precedenti &egrave; molto breve. Con questo capitolo si conclude la parte riguardante la progettazione dei database, vedremo come rendere &ldquo;normalizzato&rdquo; un database. Infatti nel creare una base dati, pu&ograve; capitare che si definiscono informazioni ripetute, ridondanze dei dati ed altri problemi che potrebbe compromettere le funzionalit&agrave; e/o le prestazioni della nostra base dati.</p>
<p class="MsoNormal">Nel penultimo capitolo (10)<span>&nbsp; </span>di questo libro, si mette in pratica<span>&nbsp; </span>quanto letto in tutti questi capitoli, un riepilogo molto pratico di tutto il libro.<span>&nbsp; </span>Il capitolo prende in esame un possibile caso reale, illustrando l&rsquo;analisi da compiere, per poi passare alla progettazione e successivamente alla creazione delle tabelle.</p>
<p class="MsoNormal">L&rsquo;ultimo capitolo (11) di questo buon libro, riguarda l&rsquo;utilizzo del linguaggio di programmazione Visual Basic Net 2008 con una fonte dati. Troviamo diversi esempi, il primo che viene illustrato riguarda la creazione di una semplice form con una maschera per la gestione dei dati. Il tutto tramite i wizard e controlli messi a disposizione da questo linguaggio. Nelle pagine successive troviamo esempi di codice, riguardante la connessione ad una fonte dati (sql server) l&rsquo;inserimento, modifica e cancellazioni dei dati.</p>
<p>&nbsp;</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Database pro e contro</p>
<p>2) Introduzione alle basi di dati</p>
<p>3) Il modello relazionale</p>
<p>4) Algebra Relazionale</p>
<p>5) Linguaggio SQL: Le istruzioni DDL e DCL</p>
<p>6) Linguaggio SQL: Le istruzioni DML</p>
<p>7) Il Ciclo di vita e lo schema E/R</p>
<p>8) Progettazione Logica</p>
<p>9) La normalizzazione</p>
<p>10) Un esempio concreto</p>
<p>11) Visual Basic e i database</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>.</p>
<p class="MsoNormal">Un ottimo libro, che fornisce una valida preparazione e conoscenza delle basi dati. Il titolo del libro pu&ograve; far pensare che questo manuale non tratti in maniera adeguata l&rsquo;argomento, al contrario, il lettore leggendo questo manuale acquisir&agrave; delle ottime nozioni e conoscenze sulla base dati.</p>
<p class="MsoNormal">Inoltre in ogni capitolo si trovano domande ed esercizi, un ottimo modo per verificare se l&rsquo;argomento trattato &egrave; stato compreso.</p>
<p>&nbsp;</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Windows 7 Guida all uso</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-windows-7-guida-all-uso_868.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>28/01/2010 0.00.00</pubDate>
<description>
<![CDATA[
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">CACCAVELLA FRANCESCO</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>&euro; 29,90</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">384 pag - 17x24 bn</div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">9788882338466</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">anno di edizione:</td>
            <td>10/2009&nbsp;</td>
        </tr>
        <tr>
            <td width="146">numero dell'edizione:</td>
            <td>1</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica.</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiano</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Digital LifeStylePro</td>
        </tr>
    </tbody>
</table>
<p>La casa editrice FAG <a href="http://www.fag.it/">http://www.fag.it</a> , in occasione dell&rsquo;uscita del nuovo sistema operativo Microsoft Windows 7, ha pubblicato un libro guida sull&rsquo;utilizzo di questa nuova versione. Il libro Windows 7 Guida all&rsquo;uso <a href="http://www.fag.it/scheda.aspx?ID=31366">http://www.fag.it/scheda.aspx?ID=31366</a> &egrave; una guida per coloro che si apprestano a passare o stanno iniziando ad usare il nuovo sistema operativo Windows 7</p>
<p>L&rsquo;autore del libro &egrave; Francesco Caccavella <a href="http://www.caccavella.com/">http://www.caccavella.com/</a> persona con 15 anni di esperienza nel settore informatico.</p>
<p>Ma vediamo in dettaglio i vari capitoli</p>
<p>Nel primo capitolo viene fornita al lettore una panoramica sul nuovo sistema operativo, le novit&agrave;, i requisiti, i prezzi, le varie versioni in modo molto introduttivo.</p>
<p>Con il secondo capitolo, ci si addentra alla nuova veste grafica del sistema operativo, inoltre sono prese in esame alcune delle operazioni comuni. Queste funzionalit&agrave; sono confrontate anche con le versioni precedenti di Windows, in modo che il lettore che gi&agrave; utilizza il sistema operativo windows, non avr&agrave; difficolt&agrave; a muoversi nel nuovo sistema operativo. Un capitolo che rende il lettore subito autonomo con il nuovo sistema operativo.</p>
<p>Nel terzo capitolo si passa al primo utilizzo vero e proprio di Windows 7. Una volta avviato il sistema operativo, per molti utilizzatori dovranno impostare alcune importanti personalizzazioni. Come per esempio la connessione ad internet, gli aggiornamenti, l&rsquo;installazione di windows live, il trasferimento dei file da un vecchio pc a questo nuovo, la personalizzazione della grafica e dei temi, lo sfondo, il salvaschermo e tanti altri aspetti per dare un tocco personale al nostro nuovo sistema operativo. La parte conclusiva del capitolo &egrave; dedicata all&rsquo;aggiunta di nuovi utenti.</p>
<p>Il capitolo 4 riguarda la gestione dei file o meglio come navigare e trovare in Windows 7 i file o le cartelle di nostro interesse. Un capitolo molto utile ed essenziali per coloro che non conosco un sistema operativo windows. Un capitolo che fornir&agrave; al lettore delle valide conoscenze sulla gestione dei file e cartelle, in tutti i vari aspetti non solo nelle operazioni pi&ugrave; comuni.</p>
<p>Nel capitolo quinto si passa alla gestione dei programmi, vedremo come installare e disinstallare un programma, associare un file ad un programma, configurare i programmi di avvio, gestire le anomalie dei programmi nel caso che si blocca o non si avvia un determinato programma e tanto altro. Sono fornite operazioni basilari sulla gestione dei programmi nel sistema operativo. Un capitolo molto indicato per coloro che si avvicinano al sistema operativo windows.</p>
<p>Nel capitolo 6, viene illustrata la configurazione e la navigazione internet. Dopo una brevissima introduzione sul web, si passa a come connettersi ad internet la creazione di una connessione &egrave; illustrata nelle prime pagine di questo capitolo. Terminata la parte d&rsquo;installazione, l&rsquo;autore si concentra sull&rsquo;utilizzo del browser di navigazione Internet Explorer 8 argomento illustrato in maniera molto bene. Terminata la parte del Browser internet Explorer 8, si passa alla gestione della posta elettronica e di come utilizzare il programma gratuito Windows Live mail, argomento che conclude questo capitolo.</p>
<p>Il capitolo settimo, riguarda l&rsquo;interattivit&agrave; del nuovo sistema operativo i software messi a disposizione per gestire i video, la musica e le foto. Nelle prime pagine di questo capitolo viene illustrato come riprodurre un video, quale software utilizzare. Terminata la parte video si passa alla musica, le operazioni pi&ugrave; comuni da compiere oltre all&rsquo;uso del programma Windows Media Player. Una buona parte del capitolo &egrave; rivolto alle foto digitali, con interessanti indicazioni per la gestione di questi file.</p>
<p>La parte conclusiva del capitolo, riguarda la creazione di video, un capitolo molto ma molto interessante ed utile per coloro che vogliono utilizzare il programma Movie Maker messo a disposizione gratuitamente da Windows 7. L&rsquo;argomento di creazione e gestione dei propri video &egrave; affrontato in maniera esauriente, fornendo al lettore le giuste indicazioni per creare in maniera autonoma e con tecniche interessati video molto professionali.</p>
<p>Nel capitolo ottavo, l&rsquo;autore del libro affronta un tema molto importante e per molti utenti anche difficile. La gestione delle periferiche. Spesso si ha difficolt&agrave; ad utilizzare una stampante, configurare una web cam, in questo capitolo vedremo per esempio come ottenere un driver aggiornare un driver, aggiungere un dispositivo e tanto altro ancora. Nel capitolo si trovano moltissime immagini, che aiuta il lettore a comprendere meglio l&rsquo;argomento.</p>
<p>Nel penultimo capitolo il nove, si passa alla sicurezza ed alcune operazioni importanti del sistema operativo. Nelle prime pagine, viene l&rsquo;illustrata l&rsquo;importanza degli antivirus, per poi illustrare il programma defender per la protezione di virus ed antispyware, effettuare i backup ed il ripristino del sistema operativo. Limitare l&rsquo;uso del pc ai bambini e vietando l&rsquo;uso di alcuni programmi.</p>
<p>Nell&rsquo;ultimo capitolo, il decimo, illustra un tema molto interessante ed importante le reti. Nel capitolo vedremo come creare una rete, condividere file e cartelle, gestire una rete, un capitolo che guida il lettore a come utilizzare pi&ugrave; pc nella propria rete domestica.</p>
<p>L&rsquo;appendice A,riguarda l&rsquo;installazione di Windows 7 passo per passo. In questo capito si trovano molte immagini e linee guida di come installare e congiurare per la prima volta il nuovo sistema operativo windows. Per ogni passaggio troviamo un&rsquo;immagine e una valida descrizione delle operazioni da compiere.</p>
<p>Qui di seguito i vari capitolo che compongono questo libro</p>
<p>1) Prima di cominciare</p>
<p>2) Orientarsi nel sistema</p>
<p>3) I primi passi</p>
<p>4) Organizzare e cercare file</p>
<p>5) Lavorare con i programmi</p>
<p>6) Internet</p>
<p>7) Foto, musica, Video</p>
<p>8) Gestire le periferiche</p>
<p>9) Sicurezza e soluzione dei problemi</p>
<p>10) Le reti private</p>
<p class="MsoNormal">Appendice A) L&rsquo;installazione di Windows 7 passo per passo</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>:</p>
<p>Il libro molto basilare, molto utile per chi si sta avvicinando al nuovo sistema operativo o per coloro che hanno poca dimestichezza con Windows. Interessanti alcuni capitoli (vedi il sesto) in cui sono fornite delle ottime indicazioni su determinati argomenti. Un libro, adatto anche a coloro che gi&agrave; utilizzano windows e sono interessati a passare alla versione 7 ma che non hanno una buona dimestichezza con l&rsquo;informatica. Forse un argomento che andava trattato, almeno nel terzo capitolo era il fatto di installare e configurare alcuni software gratuiti di base, come un antivirus gratuito e/o un antispyware.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Silverlight 3.0 Guida completa per lo sviluppatore</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-silverlight-30-guida-co_871.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>25/01/2010 0.00.00</pubDate>
<description>
<![CDATA[
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">BOCHICCHIO D. - CIVERA C. - LEONCINI A. - LEONCINI M</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>Euro 38,00</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 454 Formato <span class="label">17 x 24 cm</span></div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN13:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">9788820344122</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>10/2000</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>Manuali Hoepli.it</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>8820344122</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiana</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Hoepli</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>Il manuale Silverlight 3.0 Guida completa per sviluppatori e designer <a href="http://www.hoepli.it/libro/silverlight-30.asp?ib=9788820344122&amp;pc=000022007002001">http://www.hoepli.it/libro/silverlight-30.asp?ib=9788820344122&amp;pc=000022007002001</a>&nbsp; edito della casa editrice <a href="http://www.hoepli.it/">http://www.hoepli.it/</a>&nbsp; &egrave; il primo libro in italiano sulla tecnologia Silverlight.</p>
<p>Il libro &egrave; composto di ben 21 capitoli, con esempi pratici su questa tecnologia tramite il linguaggio di programmazione Visual Basic Net e C# Gli autori (Daniele Bochicchio, Cristian Civera, Alessio Leoncini e Marco Leoncini) di questo manuale, sono persone con vasta esperienza del campo nonch&eacute; responsabili e gestori del portale Aspitalia.</p>
<p>Nel libro non &egrave; incluso nessun CD-Rom o dvd, gli esempi si possono scaricare dal seguente sito <a href="http://books.aspitalia.com/Silverlight-3.0/demo/">http://books.aspitalia.com/Silverlight-3.0/demo/</a></p>
<p>Ma vediamo in dettaglio i vari capitoli che fanno parte di questo libro.</p>
<p>Nel primo capitolo viene fornita al lettore una breve ma valida introduzione sulla tecnologia Silverlight. Le prime pagine illustrano l&rsquo;architettura di questo nuovo modo di scrivere applicazioni per il web, proseguendo si passa ad alcuni esempi pratici sul linguaggio di markup XAML concludendo il capitolo con altri esempi tramite l&rsquo;utilizzo del linguaggio di programmazione VB.Net e C#. Questi brevi e semplici esempi, aiutano il lettore a comprendere il funzionamento di questa tecnologia.</p>
<p>Nel secondo capitolo, si passa al primo vero utilizzo di Silverlight. Le varie fasi guidano il lettore a comprendere le basi di questa tecnologia. L&rsquo;utilizzo dell&rsquo;ambiente di sviluppo Visual studio 2008, la creazione di un&rsquo;animazione durante la fase di caricamento ed alcune nozioni sulla sicurezza. Un capitolo molto breve, che aiuta il lettore a questa tecnologia.</p>
<p>Il terzo capitolo &egrave; rivolto ad un altro ambiente per la creazione di soluzioni basate con Silverlight. In questo capitolo sono forniti nozioni basilari sull&rsquo;utilizzo del programma Expression blend. Il capitolo vuole far comprendere al lettore che la creazione di pagine web basate su tecnologia Silverlight, oltre all&rsquo;utilizzo di Visual Studio 2008 e possibile anche con lo strumento Expession Blend.</p>
<p>Nel capitolo quarto, viene illustrata la gestione della predisposizione degli oggetti nella pagina Silverlight, in particolare vedremo come gestire l&rsquo;aspetto delle pagine create con questa tecnologia. Nel capitolo sono illustrati esempi di codice e di presentazione grafica tramite l&rsquo;uso di alcuni controlli come il pannello StackPanel, il controllo grid, il controllo WrapPanel e dockpanel. Nella parte conclusiva del capitolo viene illustrata la creazione di un pannello personalizzato.</p>
<p>Il quinto capitolo riguarda la gestione del testo, font ed effetti grafici. Nelle prime pagine del capitolo sono riportati alcuni esempi di codice, riguardante effetti grafici da applicare al testo, continuando a leggere il capitolo si passa ai controlli TextBox e PasswordBox applicando particolari effetti. Il capitolo fornisce le basi per comprendere le classi per la gestione della grafica del testo in Silverlight.</p>
<p>Il capitolo sesto riguarda l&rsquo;utilizzo di figure geometriche, in particolare vedremo come utilizzare gli oggetti messi a disposizione da questa tecnologia. Nel capitolo si trovano diversi esempi di codice, riguardante l&rsquo;utilizzo di oggetti geometriche, tra i quali l&rsquo;oggetto rectangle, ellipse, line, polyline, polygon, rectangleGeometry, ellipseGeometry, ad altre interessanti tecniche di uso delle figure geometriche.</p>
<p>Nel capitolo settimo, vengono illustrate alcune classi per la gestione della grafica, in particolare applicare dei colori di riempimento. Le classi utilizzate in questo capitolo, quali VideoBrush, ImageBrush, RadialGradientBrush, LinearGradientBrush e soldiColorBrusm, permettono di applicare un determinato riempimento o aspetto grafico su cui si applica.</p>
<p>Il capitolo ottavo, come anche nei capitoli precedenti &egrave; un capitolo breve ed introduttivo su altri aspetti grafici. In questo capitolo vedremo come applicare l&rsquo;effetto di rotazione degli oggetti. La possibilit&agrave; di applicare un effetto visivo impostando l&rsquo;oggetto in un certa inclinazione, per darle un effetto visivo.</p>
<p>Nel capitolo nono viene illustrato la gestione del mouse e della tastiera. In questo capitolo vedremo tecniche di come utilizzare e gestire gli eventi del mouse e della tastiera. Nella parte conclusiva di questo capitolo viene illustrata anche la gestione del multi touch. Un capitolo che fornisce le basi per gestire gli eventi del mouse e della tastiera.</p>
<p>Nel capitolo decimo, viene illustrato al lettore l&rsquo;utilizzo di alcune tecniche per applicare effetti visivi alle immagini ed oggetti.</p>
<p>Il capitolo 11, fornisce le basi per comprendere la parte riguardante le animazioni in Silverlight. In questo capitolo vengono fornite nozioni di base su come applicare ad oggetti particolari animazioni.</p>
<p>Nel capitolo 12 vedremo l&rsquo;utilizzo dello strumento gratuito deep zoom. Gli esempi contenuti in questo capitolo permettono al lettore di acquisire le basi per utilizzare con dimestichezza questo strumento.</p>
<p>Il capitolo 13 illustra la gestione del multimedia in particolare si trovano esempi e tecniche per la gestione audio e video. In questo capitolo, vedremo come applicare in una pagina Silverlight un video e gestirle il flusso video audio. Viene fornita anche una base di utilizzo del programma Expresion Encoder.</p>
<p>Con il capitolo quattordicesimo, sono forniti alcune nozioni di base dei controlli pi&ugrave; comunemente utilizzati, L&rsquo;utilizzo del controllo border, del controllo button, RadioButton e checkbox, listbox e combobox, scrollviewer GridSplitter, progress bar, in alcuni di essi viene fornita una spiegazione di base con mancanza di un vero e proprio esempio di codice. Continuando a leggere il capitolo, l&rsquo;argomento dei controlli continua con l&rsquo;introduzione del Toolkit, che contiene diversi controlli non disponibili in silverlight. Gli esempi di codice, riguardano il controllo TreeView, la creazione di una barra laterale stile quella del programma Outlook, il controllo Chart ed Expander.</p>
<p>Nel capitolo 15, vedremo l&rsquo;utilizzo delle risorse e stili in questa tecnologia. Nel capitolo si fa riferimento anche al programma Microsoft Expression Blend. Proseguendo a leggere vedremo come applicare ed utilizzare particolari stili ai nostri oggetti di Silverlight.</p>
<p>Il capitolo 16, illustra un tema molto importante ed al tempo stesso anche complesso, la gestione dei dati. In questo capitolo vedremo come associare ai controlli una fonte dati, tramite il data Binding. Il capitolo fornisce le basi di utilizzo dei dati nei vari controlli Silverlight. Nella parte conclusiva del capitolo, viene illustrata la gestione di una fonte dati tramite un servizio web in particolare tramite Windows Communication Foundation.</p>
<p>Anche il capitolo successivo, ossia il 17, illustra la gestione dei dati da una fonte dati. In questo capitolo vengono fornite al lettore le basi di utilizzo della tecnologia per l&rsquo;accesso ai dati, denominata Ado.Net Data Services. L&rsquo;utilizzo del pacchetto .Net Ria Services, viene illustrato passo per passo, dall&rsquo;installazione fino al suo utilizzo con esempi di codice riguardante la gestione dei dati, come inserimento, cancellazione, aggiornamento e caricamento dei dati, e tecniche di visualizzazione dei dati.</p>
<p>Nel capitolo diciottesimo sono fornite indicazioni di tecniche di programmazione avanzata. In questo capitolo troviamo alcuni esempi di codice che possono tornare utile nello sviluppo di applicazioni basate con tecnologia Silverlight. Esempi di codice riguardante il thread, la gestione degli errori, gestire il settaggio della lingua dell&rsquo;applicazione predisponendolo in base alla cultura, la finestra di dialogo ,il modello per la presentazione delle pagine. Tecniche molto interessanti che potrebbero tornarci utili nello sviluppo della nostra applicazione.</p>
<p>Nel penultimo capitolo (19) , in questo capitolo sono forniti tecniche riguardante l&rsquo;architettura di Silverlight. Esempi di codice, molto utili che permettono di gestire le applicazioni Silverlight. La gestione dello storico di navigazione, il caricamento dinamico di un&rsquo;applicazione Silverlight, ridurre le dimensioni del pacchetto XAP, e tante altre tecniche di programmazione.</p>
<p>Nell&rsquo;ultimo capitolo, il ventesimo, viene illustrata l&rsquo;utilizzo di Silverlight anche fuori dal browser di navigazione. In questo capitolo sono fornite della valide linea guida riguardante l&rsquo;utilizzo di Silverlight come applicazione Client non web, ossia come una normale applicazione che viene eseguita nel proprio computer.</p>
<p>Terminati i vari capitoli, si trovano tre appendice che fornisco in maniera molto ma molto breve alcuni scenari. Nell&rsquo;appendice a troviamo l&rsquo;argomento riguardante la creazione di un servizio, mentre nell&rsquo;appendice b alcuni consigli riguardante la sicurezza, infine nell&rsquo;appendice c, sono elencati alcuni strumenti che possono tornarci utili nello sviluppo di applicazioni Silverlight.</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Introduzione a Silverlight</p>
<p>2) Primi passi con Silverlight</p>
<p>3) Lavorare con Express Blend 3.0</p>
<p>4) La gestione del Layout</p>
<p>5) Il supporto per testo, font ed effetti grafici</p>
<p>6) Oggetti per il disegno</p>
<p>7) L&rsquo;uso dei pennelli</p>
<p>8) Le trasformazioni e gli effetti</p>
<p>9) Gestione dell&rsquo;input</p>
<p>10) Gestione effetti speciali</p>
<p>11) Introduzione alle animazioni</p>
<p>12) Immagini intereattive con deep zoom</p>
<p>13) Supporto ad audio e video</p>
<p>14) Uso dei controlli</p>
<p>15) Gestione di risorse, style e template</p>
<p>16) Data binding e tecniche di accesso ai dati</p>
<p>17) .Net Ria Services: Dal server a silverlight</p>
<p>18) Uso avanzato di Silverlight</p>
<p>19) Progettare applicazioni a componenti con Silverlight</p>
<p>20) Silverlight dentro e fuori dal browser</p>
<p>Appendice a &ndash; Realizzare servizi con il .Net Framework</p>
<p>Appendice b &ndash; principi di sicurezza in Silverlight</p>
<p>Appendice c &ndash; i tool essenziali per Silverlight</p>
<p>&nbsp;</p>
<p><b>Conclusioni</b>.</p>
<p>Un libro molto introduttivo che fornisce le basi su alcune tecniche di utilizzo della tecnologia Silverlight. Molti capitoli trattano la parte grafica e sono molto brevi ed introduttivi. Il libro &egrave; adatto per coloro che si stanno avvicinando per la prima volta a questa tecnologia, un libro che fornisce adeguate conoscenze di base su questa tecnologia. Interessante gli esempi di codice, che sono scritti per i linguaggi di programmazione Visual Basic Net e C#. Nel libro non viene trattato la creazione di controlli personalizzati o componenti (DLL) in Silverlight, inoltre viene illustrata una breve introduzioni di utilizzo di alcuni dei controlli messi a disposizione da Silverlight.</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Asp.Net 3.5 in Csharp e VB guida per lo sviluppatore</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-aspnet-35-in-csharp-e-v_862.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>11/01/2010 0.00.00</pubDate>
<description>
<![CDATA[
<p>Scheda del libro:</p>
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">EVJEN BILL - HANSELMAN SCOTT - RADER DEVIN</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>Euro 59,90</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">Pagine 1426 Formato <span class="label">17 x 24 cm</span></div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN13:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">9788820336844</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">Anno di edizione:</td>
            <td>07/2008</td>
        </tr>
        <tr>
            <td width="146">Collana:</td>
            <td>Manuali Hoepli.it</td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>8820336847</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiana</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Hoepli</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>Con i suoi trent&rsquo;uno capitoli e ben 1370 pagine, il libro Asp.Net 3.5 in C# e VB guida per lo sviluppatore <a href="http://www.hoepli.it/libro/aspnet-35-in-vb-guida-per-lo-sviluppatore.asp?ib=9788820336844&amp;pc=000022007002013">http://www.hoepli.it/libro/aspnet-35-in-vb-guida-per-lo-sviluppatore.asp?ib=9788820336844&amp;pc=000022007002013</a>&nbsp; edito della casa editrice Hoepli <a href="http://www.hoepli.it/">http://www.hoepli.it</a> , rende questo manuale fondamentale per coloro che lavorano o sono interessati ad utilizzare la tecnologia Asp.Net 3.5.</p>
<p>Il libro &egrave; scritto in lingua italiana, tradotto per la casa editrice Wrox. Gli autori di questo ottimo manuale, sono persone molto esperte e con una forte passione per la tecnologia .Net, al punto che si dedicano ad iniziative di divulgazione come alla partecipazione di eventi come speaker ed in vari user group.</p>
<p>Bill Evjen &egrave; fondatore dello User group <a href="http://www.stlnet.org/">www.stlnet.org</a>&nbsp; inoltre ha scritto diversi articoli e libri.</p>
<p>Scott Hanselman il cui blog &egrave; visibile al seguente sito <a href="http://www.hanselman.com/blog/">http://www.hanselman.com/blog/</a>&nbsp; collabora con diverse community.</p>
<p>Devin Rader il cui blog &egrave; visibile al seguente sito <a href="http://geekswithblogs.net/devin/Default.aspx">http://geekswithblogs.net/devin/Default.aspx</a>&nbsp; collabora con diversi User Group olrre ad essere cofondatore dello User Group <a href="http://www.stlnet.org/">www.stlnet.org</a>&nbsp; .</p>
<p>Nel libro non si trova nessun CD-Rom o dvd, gli esempi di codice sia per il linguaggio Visual basic Net che per il linguaggio C#, si possono scaricare dal seguente sito <a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470187573,descCd-DOWNLOAD.html">http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470187573,descCd-DOWNLOAD.html</a> oppure qui <a href="http://www.hoepli.it/editore/OpenURL.asp?id=3684-4">http://www.hoepli.it/editore/OpenURL.asp?id=3684-4</a> .</p>
<p>Ma vediamo in dettaglio i vari capitoli</p>
<p>Dopo una valida introduzione al libro ed alla tecnologia Asp.Net, nel primo capitolo si passa al Framework ed alle applicazioni web. In questo capitolo sono forniti le nozioni di base di questa tecnologia, introduzioni relative al web server IIS, all&rsquo;ambiente di sviluppo e l&rsquo;architettura delle pagine Aspx. Nel capitolo si trovano immagini ed esempi di codice, per far comprendere in modo chiaro ed intuitivo al lettore la struttura delle pagine Aspx e del relativo codice di programmazione, tramite i linguaggi di programmazioni Visual Basic Net e C#.</p>
<p>Nel secondo capitolo, si passa alla pratica vera e propria di questa tecnologia, illustrando i controlli server di questa tecnologia. Dopo una buona introduzione riguardante il concetto di controllo server, si passa agli eventi dei controlli e le propriet&agrave;, esempi di base per far comprendere al lettore ci&ograve; che avviene quando si scatena un evento o quando viene impostata una determinata propriet&agrave;. Continuando a leggere il capitolo, viene illustrato come applicare dei stili ai controlli. La parte conclusiva del capitolo riguarda i controlli server html e l&rsquo;utilizzo di codice Javascript, per eseguire operazioni lato client.</p>
<p>Nel terzo capitolo, continuano la parte riguardante i controlli, questa volta sono illustrati i controlli server messi a disposizione da Asp.Net. Nel capitolo sono illustrati i controlli pi&ugrave; comuni, come il controllo Label, literal, textbox, button, linkbutton, imagebutton, hyperlink, dropdownlist, listbox, checkbox, checkboxlist,radiobutton, radiobuttonlist, image, table, calendar, adrotator, panel, xml, placeholder, e tanti altri. Il capitolo &egrave; molto ampio ed affronta in maniera introduttiva l&rsquo;utilizzo di quasi tutti i controlli messi a disposizione da Asp.Net, numerosi gli esempi di codice e le immagini.</p>
<p>Il capitolo 4, illustra in maniera esauriente i controlli per la convalida dei dati. Dopo una buona introduzione riguardante il concetto di convalida dei dati, si passa al controllo requiredFieldValidator, fornendo interessanti esempi di codice. Continuando a leggere il capitolo, sono descritti altri controlli, quali il controllo CompareValidator, il controllo RangeValidator, il controllo RegularExpressionValidator, il controllo customValidator, il controllo ValidationSummary, un capitolo molto interessante e tutto dedicato ai controlli di convalida.</p>
<p>Il quinto capitolo &egrave; dedicato alle pagine master, in questo capitolo, troviamo delle ottime spiegazioni su come gestire le pagine master. Nelle prime pagine viene illustrato al lettore il concetto di master page, fornendo una valida spiegazione. Nel capitolo si trovano vari esempi e scenari di utilizzo delle pagine master, permettendo al lettore di acquisire le conoscenze adeguate per poterle utilizzare in maniera professionale.</p>
<p>Con il capitolo sesto, si passa alla parte grafica, o meglio alla gestione dei temi e skin. Il capitolo fornisce importanti indicazioni di utilizzo dei temi e skin nelle proprie applicazioni Asp.net.</p>
<p>Il capitolo 7, affronta un tema molto interessante ed importante, la gestione di una fonte dati. In questo capitolo sono illustrate le tecniche per associare un controllo ad una fonte dati tramite il data binding. Nelle prime pagine viene illustrato il controllo sqldataSource, come creare una connessione ad una base dati. Di questo controllo vengono illustrate le propriet&agrave; e come personalizzarlo impostando determinati criteri di ricerca. Continuando a leggere il capitolo si passa al controllo Linq, novit&agrave; introdotto con la versione del Framework 3.5. Terminata la parte riguardante i controlli che permettono la gestione dei dati, si passa ai controlli per la visualizzazione dei dati. Viene illustrato in maniera approfondita il controllo GridView con numerosi esempi di codice ed immagini. Terminato il controllo GridView, si passa al controllo DetailsView, per poi continuare con i controlli listView e formView. La parte conclusiva del capitolo, illustra alcuni semplici esempi di base di alcuni controlli per la gestione dei dati, come il controllo DropDowList, Listbox, RadioButtonList e Checkboxlist, treeview e menu.</p>
<p>Nel capitolo 8, continua l&rsquo;argomento riguardante la gestione dei dati, in questo capitolo viene affrontata la tecnologia Ado.Net. Dopo una breve introduzione alla tecnologia Ado.net, si passa ad un semplice esempio di codice, riguardante la lettura dei dati da una database Sql Server. Successivamente sono illustrati esempi di codice di aggiornamento, inserimento e cancellazione dei dati. Esempi che anticipano gli argomenti che vengono affrontate nelle pagine successive. Infatti dopo una valida ed interessante spiegazione riguardante le classi per la gestione dei dati, si passa alla spiegazione di ogni singola classe, illustrando i vari metodi e propriet&agrave;, classi per la connessione dei dati, la classe per eseguire query, e tutte quelle che ci permettono di gestire una fonte dati. Il capitolo affronta in maniera esauriente fornendo al lettore le conoscenze adeguate per gestire una fonte dati, il capitolo contiene numerosi esempi di codice ed illustra anche l&rsquo;utilizzo del designer per la gestione dei database messo a disposizione dall&rsquo;ambiente di sviluppo Visual Studio 2008.</p>
<p>Nel capitolo nono, continua la gestione dei dati questa volta illustrando l&rsquo;utilizzo di Linq. Il capitolo, contiene numerosi scenari ed esempi di codice di Linq, esempi di tipo linq to object, linq to xml, e linq to sql. Esempi di codice con particolari clausole per estrapolare determinati dati. Un capitolo molto interessante sia per coloro che non conosco questa novit&agrave; e sia per coloro che hanno una certa base. L&rsquo;argomento &egrave; affrontato in maniera approfondita fornendo al lettore le conoscenze adeguate per utilizzare in maniera autonoma ed approfondita la novit&agrave; relativa a Linq.</p>
<p>Nel capitolo 10, si passa al protocollo xml in questo capitolo vedremo come gestire i file di tipo xml e come utilizzare Linq To xml. Il capitolo contiene numerosi esempi e scenari permettendo al lettore di avere una panoramica completa di utilizzo di questi file.</p>
<p>Il capitolo 11, affronta un tema difficilmente presente nei manuali sulla tecnologia Asp.Net. In questo capitolo vedremo l&rsquo;utilizzo del provider, come tramite lo strumento di amministrazione messo a disposizione da Asp.net possiamo configurare il provider delle nostre applicazioni Web. La gestione dei ruoli, dello stato, e tanti altri aspetti. Un capitolo complesso ma con diversi esempi di utilizzo.</p>
<p>Nel capitolo dodicesimo, sono affrontati quei controlli che permettono di navigare tra le varie pagine del sito. Nel capitolo sono affrontati i controlli per una buona navigazione del sto. Nelle prime pagine viene illustrato il controllo SiteMapPath, con diversi esempi di codice, continuando a leggere il capitolo si passa al controllo TreeView, illustrato in maniera approfondita. Terminata la parte del controllo TreeView, viene illustrato il controllo Menu con diversi esempi molto interessanti, il controllo sitemap chiude gli esempi di codice relativo ai controlli di navigazione.</p>
<p>Nel capitolo 13, viene illustrato come predisporre il sito web in base all&rsquo;utente. In questo capitolo vedremo come personalizzare la nostra applicazione Web, in riferimento al visitatore che sta navigando nel sito, il capitolo anticipa il tema che verr&agrave; affrontato nel capitolo successivo, quello relativo agli utenti.</p>
<p>Con il capitolo 14, si passa alla gestione delle autorizzazioni al sto. In questo capitolo vedremo come permettere ad alcuni utenti di accedere a determinate pagine o vietare l&rsquo;accesso ad alcuni utenti. Il capitolo fornir&agrave; delle ottime indicazioni di come creare pagine per l&rsquo;accesso al sito, utilizzando le classi ed i controlli (login, createUserWizard, loginName, ecc) messi a disposizione da Asp.Net. Il lettore al termine del capitolo sar&agrave; in grado di creare siti web, impostando limitazioni ad utenti, creando precedentemente gruppi, profili ed utenti. Argomento molto importante per l&rsquo;accessibilit&agrave; al sito.</p>
<p>Nel capitolo 15, viene illustrato lo sviluppo di web part. Nel capitolo vedremo come dare la possibilit&agrave; al navigatore di modificare la pagina che sta visitando. L&rsquo;argomento &egrave; affrontato in maniera esauriente fornendo una buona conoscenza dello sviluppo di web part.</p>
<p>Il capitolo 16, prende in esame l&rsquo;utilizzo dei fogli di stile (css) ed il codice html in ambito della tecnologia Asp.Net Nel capitolo viene spiegato come utilizzare nelle pagine Aspx i fogli di stile e dare alle pagine una certa formattazione.</p>
<p>Nel capitolo diciassettesimo, gli autori del libro illustrano il framework Ajax. Nelle prime pagine del capitolo viene fatta una buona introduzione a questo nuovo modello di sviluppo web. Le prime pagine introduttive forniscono una valida base per comprendere il funzionamento di Ajax. Terminata la parte introduttiva si passa al suo utilizzo nelle pagine Asp.Net. Gli esempi, che concluderanno questo capitolo, riguardano i controlli pi&ugrave; comuni, come lo script manager, scriptManagerProxy, il timer, updatepanel ed infine il controllo update progress.</p>
<p>Ottimo il capitolo diciottesimo, nel quale viene affrontato un argomento importante per lo sviluppo web. La sicurezza, argomento complesso ed importante per rendere i siti sicuri. Nel capitolo viene illustrato come applicare alle applicazioni web una valida sicurezza. Non solo la parte Asp.Net viene affrontata, ma anche la parte relativa al web server Internet Information Services.</p>
<p>Con il capitolo 19 vedremo l&rsquo;utilizzo della gestione dello stato in Asp.Net. Dopo una buona introduzione, si passa all&rsquo;utilizzo dell&rsquo;oggetto Session, illustrando con numerosi esempi di codice il suo utilizzo. Continuando a leggere il capitolo si passa all&rsquo;utilizzo della sessione in altri modi, come per esempio tramite provider, cookie, l&rsquo;oggetto application, viewstate, httpcontext.</p>
<p>L&rsquo;argomento della gestione delle informazioni tra pagine viene illustrata anche nel capitolo ventesimo. In questo capitolo, vedremo l&rsquo;utilizzo della Cache e di come gestire le informazioni tra pagine Aspx.</p>
<p>l capitolo 21, illustra il debug di applicazioni web. Nel capitolo sono riportate varie tecniche di come effettuare il debug nelle pagine aspx e di come utilizzare l&rsquo;ambiente visual studio 2008 per gestire le varie istruzioni di codice. Nel capitolo si trovano numerose immagini ed esempi di codice. Il capitolo fornisce delle importanti basi di questo argomento.</p>
<p>Nel ventiduesimo capitolo, viene illustrato l&rsquo;utilizzo delle classi messe a disposizione del framework per la gestione dei file e delle cartelle. Nel capitolo si trovano numerosi esempi di codice, di come gestire i file e le cartelle, rilevare le informazioni di un file o di una cartella. Oltre alla gestione delle cartelle e file, vedremo come scrivere e leggere in un file, gestire i file compressi e lavorare con la rete o porte seriali, un ottimo capitolo su tutto ci&ograve; che concerne i file e le cartelle.</p>
<p>In alcuni libri, il tema della creazione dei controlli viene illustrato in due capitoli, in questo libro, nel capitolo ventitreesimo viene fornita una valida introduzione allo sviluppo di controlli utenti e controlli server. Anche se l&rsquo;argomento &egrave; abbastanza complesso, in questo capitolo gli autori forniscono importanti nozioni ed informazioni sulla creazione di controlli personalizzati. Il capitolo &egrave; molto ma molto ampio e con diversi esempi di codice.</p>
<p>Nel capitolo 24, viene affrontato un tema molto difficile ed interessante, la gestione dei moduli e la gestione dei processi di elaborazione delle pagine Asp.Net, gli hanlder. In questo capitolo, si parla anche di Internet Information Services.</p>
<p>Nel capitolo venticinquesimo, si passa ad un argomento riguardante i componenti com. A differenza di tanti manuali, in questo troviamo un capitolo, anche se pur breve, di come gestire nelle applicazioni Asp.Net, librerie di tipo com e di tipo .Net. Il capitolo, affronta vari aspetti sull&rsquo;utilizzo di oggetti com, l&rsquo;utilizzo di oggetti .Net in applicazioni che fanno uso del linguaggio di programmazione Visual Basic 6, la parte finale del capitolo &egrave; dedicata alla distribuzioni di componenti. Questo capitolo a differenza di molti altri capiti &egrave; molto breve, ma fornisce delle importanti indicazioni.</p>
<p>Il capitolo 26, fornisce importanti basi ed indicazioni sullo sviluppo ed utilizzo dei servizi web. Gli autori affrontano in maniera molto professionale l&rsquo;argomento dei servizi web, sia i servizi web di tipo ASMx e sia quelli creati tramite Windows Communication Foundation (WCF). In questo capitolo non solo esempi, ma anche importanti spiegazioni sull&rsquo;architettura dei servi web. Nelle prime pagine viene illustrato la creazione ed utilizzo dei servizi web di tipo xml, quelli di tipo ASMX, mentre la parte finale del capitolo riguarda i nuovi servizi web di tipo WCF.</p>
<p>Nel capitolo ventisettesimo, vedremo come applicare nelle nostre applicazioni web la localizzazione, ossia come impostare le pagine asp.net con determinate culture. Il capitolo illustra come utilizzare le classi messe da disposizione del Framework per la gestione della cultura e come utilizzare i file di risorse. Un capitolo molto breve che introduce e fornisce al lettore adeguate conoscenze.</p>
<p>Il capitolo 28, &egrave; tutto dedicato al file di configurazione (web.config) vedremo come gestire i vari parametri e creare delle apposite sezioni.</p>
<p>Nel capitolo 29, viene illustrato un argomento raramente trattato nei libri di questo genere. In questo capitolo vedremo come utilizzare la finestra degli eventi per scrivere le informazioni della nostra applicazione Asp.Net e gestire le prestazioni del nostro sito web.</p>
<p>Nel penultimo capitolo, trentesimo, vedremo come amministrare e gestire il nostro sito web tramite la console di amministrazione messa a disposizione da Asp.Net. In questo capitolo, vedremo come impostare alcuni paramenti tramite questo strumento per le applicazioni Asp.Net. Aspetti come la sicurezza, i ruoli, gli utenti e tanto altro ancora.</p>
<p>Nell&rsquo;ultimo capitolo, il trentunesimo, il lettore acquisir&agrave; le conoscenze per distribuire la propria applicazione Asp.Net In questo capitolo vedremo come creare un pacchetto d&rsquo;installazione per distribuire su altri pc, il nostro sito web il tutto tramite gli strumenti messi a disposizione dall&rsquo;ambiente di sviluppo Visual Studio .Net</p>
<p>Qui di seguito si riportano i vari capitoli del libro.</p>
<p>1) Framework delle applicazioni e di pagina</p>
<p>2) Sviluppo Asp.Net di controlli Server script lato client</p>
<p>3) I controlli server web di Asp.Net</p>
<p>4) I controlli server di convalida</p>
<p>5) Elaborazione delle pagine master</p>
<p>6) Temi e skin</p>
<p>7) Data Binding in Asp.Net 3.5</p>
<p>8) Gestione dei dati con Ado.Net</p>
<p>9) Query con Linq</p>
<p>10) Elaborazione xml e linq to xml</p>
<p>11) Introduzione al modello provider</p>
<p>12) Navigazione del sto</p>
<p>13) Personalizzazione</p>
<p>14) Gestione dell&rsquo;autenticazione e dell&rsquo;autorizzazione</p>
<p>15) Portal Framework e web Part</p>
<p>16) Progettazione html e css con Asp.Net</p>
<p>17) Asp.Net Ajax</p>
<p>18) Sicurezza</p>
<p>19) Gestione dello stato</p>
<p>20) Caching</p>
<p>21) Tecniche di debugging e di gestione degli errori</p>
<p>22) I/O dei file e stream</p>
<p>23) Controlli utente e controlli Server</p>
<p>24) Moduli e Handler</p>
<p>25) Utilizzo di oggetti business</p>
<p>26) Costruzione e utilizzo dei web Service xml</p>
<p>27) Localizzazione</p>
<p>28) Configurazione</p>
<p>29) Misura di eventi e prestazioni</p>
<p>30) Amministrazione e gestione</p>
<p>31) Pachaging e distribuzione di applicazioni Asp.Net</p>
<p><b>Conclusioni</b>.</p>
<p>Un ottimo libro sia per coloro che sono interessati allo sviluppo web con la tecnologia Asp.Net e sia per coloro che gi&agrave; utilizzano questa tecnologia. Molti gli argomenti affrontati nel libro, in maniera molto ma molto professionale. La particolarit&agrave; di questo libro e che tutti gli esempi riguardano i linguaggi pi&ugrave; comuni della tecnologia .Net, quale Visual Basic Net e C#. Un libro che copre tutti gli aspetti dello sviluppo web tramite la tecnologia Asp.Net, fornendo al lettore adeguate conoscenze. Insomma un libro che non pu&ograve; mancare nello scaffale di un buon programmatore.</p>]]>
</description>
</item>
<item>
<title>Masterizzare con la tecnologia .Net tramite la dll XPBurn</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_masterizzare-con-la-tecnologia-net-trami_795.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>30/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>L&rsquo;articolo illustrato qui di seguito, riporta una tecnica di come registrare i file&nbsp;su cd e dvd.<br />
Il codice si pu&ograve; utilizzare sul sistema operativo Windows XP, Windows Vista e Windows 7, con un masterizzatore per CD e/o DVD.<br />
La versione del Framework &egrave; 2.0 o superiore (3.X, 4.0)<br />
Prima di tutto occorre scaricare dal seguente sito&nbsp;<a href="http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx">http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx</a>&nbsp;il componente xpburn, il quale permette di gestire l&rsquo;unita cd/Dvd in cui si trova il masterizzatore.<br />
Dopo aver compilato il sorgente della dll, aggiungete al vostro progetto il riferimento alla dll xpburn,</p>
<h3>Creazione dell&rsquo;interfaccia</h3>
Inserite nella form, quattro pulsante, due controlli progress bar, cinque controlli label, due controlli listbox ed una casella di testo, la form dev&rsquo;essere simile a quella illustrata nella figura 1.<br />
<br />
<img height="569" width="544" src="/contenutiupload/13/image/XpBurnFigura1.jpg" alt="" />&nbsp;<br />
<strong>Figura 1</strong><br />
La casella combinata Unit&agrave;, avr&agrave; il compito di visualizzare le unit&agrave; per la scrittura su cd, mentre il pulsante indicante i tre&nbsp;puntini&nbsp;&quot;...&quot;&nbsp;che si trova&nbsp;vicino a&nbsp;quello con la scritta Aggiungi, permette di selezionare i file dal proprio pc, che con il pulsante aggiungi&nbsp; permette di aggiungere nel controllo listbox la lista dei file da registrare sul cd-rom.<br />
Le due progress bar, indicano lo stato della preparazione e lo stato della scrittura su cd-rom.<br />
Mentre i due pulsante masterizza ed espelli gestiscono l&rsquo;unit&agrave;, con il pulsante masterizza, si avvia la scrittura dei dati, mentre con il pulsante espelli apre il cassetto dell&rsquo;unit&agrave;.<br />
Nella listbox situata nella parte inferiore della finestra, visualizza le varie operazioni in corso.
<h3>Stesura del codice.</h3>
<p>Passiamo in visualizzazione codice, per scrivere il codice per&nbsp; eseguire le varie operazioni.<br />
Prima di tutto, aggiungiamo lo spazio dei nomi, del componente&nbsp;XPburn,&nbsp;aggiunto precedentemente.<br />
Qui di seguito si riporta tale codice.</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Imports XPBurn</div>
<h4><strong>Codice C#</strong></h4>
<div class="code">using XPBurn;</div>
<p>Si crea a livello di form, un oggetto di tipo XPBurnCD per la gestione degli eventi e dei metodi&nbsp; per la gestione del CD.<br />
Riportiamo dopo la dichiarazione di classe della form il codice per la creazione dell&rsquo;oggetto XPBurnCD</p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<p></p>
<div class="code">Private WithEvents ObjMasterizza As XPBurn.XPBurnCD</div>
<p><strong><br />
<br />
</strong></p>
<h4><strong>Codice C#</strong></h4>
<p></p>
<div class="code">private XPBurn.XPBurnCD ObjMasterizza;</div>
<p>Nell&rsquo;evento load della form, dobbiamo caricare nella casella combinata delle unit&agrave;, i nomi delle unit&agrave; montante sul pc per la scrittura dei dati su CD.<br />
Qui di seguito si riporta il codice delle suddette operazioni.</p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<div class="code">Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Intconta As Integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'carico in una combo i nomi delle unit&agrave; dove si pu&ograve; masterizzare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza = New XPBurnCD()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Intconta = 0 To ObjMasterizza.RecorderDrives.Count - 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives(Intconta)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmbdrive.Items.Add(ObjMasterizza.ProductID)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'imposto la prima unit&agrave;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If cmbdrive.Items.Count &gt; 0 Then cmbdrive.SelectedIndex = 0<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#<br />
</strong></h4>
<div class="code">private void Form1_Load(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //carico in una combo i nomi delle unit&agrave; dove si pu&ograve; masterizzare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza = new XPBurnCD();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int Intconta = 0; Intconta &lt; ObjMasterizza.RecorderDrives.Count; Intconta++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives[Intconta].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmbdrive.Items.Add(ObjMasterizza.ProductID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto la prima unit&agrave;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cmbdrive.Items.Count &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmbdrive.SelectedIndex = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Analiziamo il listato di codice precedente, le prima operazione &egrave; quella di&nbsp;inizializzare l&rsquo;oggetto di tipo XPBurnCD, terminato ci&ograve; effettua un ciclo in cui rilever&agrave; le unit&agrave; cd-rom o dvd, per la scrittura dei dati. I nomi saranno riportati nella casella combinata.</p>
<p>Per l&rsquo;evento click del pulsante Espelli, dobbiamo aprire il cassetto dell&rsquo;unit&agrave; cd-Rom, questo avviene tramite il metodo Eject dell&rsquo;oggetto di tipo XPBurnCD.<br />
Si riporta il codice per l&rsquo;evento click del pulsante espelli.</p>
<h4><strong>Codice VB.Net</strong><strong><br />
</strong></h4>
<div class="code">Private Sub BtnEspelle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEspelle.Click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Espelle il cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.Eject()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong><br />
<br />
</strong></p>
<h4>Codice C#<strong><br />
</strong></h4>
<div class="code">private void BtnEspelle_Click(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Espelle il cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.Eject();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>La classe XPBurnCd, mette a disposizione diversi eventi che permettono di gestire le varie fasi della scrittura dei dati su CD. Vediamoli qui di seguito alcuni.<br />
L&rsquo;evento per la prepazione, &egrave;&nbsp;il momento in cui si prepara a registrare, rilevando le informazioni dei file per poi registrarli sul Cd-rom &egrave; denominato PreparingBurn. L&rsquo;evento BlockProgress ci fornisce indicazioni riguardante i file che vengono scritti su CD, mentre l&rsquo;evento Addprogress &egrave; la fase di preparazione dei&nbsp; dati su cd.<br />
Con l&rsquo;evento BurnComplete, possiamo sapere la conclusione della scrittura dei dati, mentre l&rsquo;evento ClosingDisck &egrave; il momento in cui viene chiuso il CD.</p>
<p><br />
Qui di seguito si riportano i vari esempi di&nbsp;eventi illustrati precedentemente<br />
Evento di preparaizone:</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">'evento che avviene prima di registrare. Prepara il cd<br />
&nbsp;&nbsp;&nbsp; Private Sub ObjMasterizza_PreparingBurn(ByVal nEstimatedSeconds As Integer) Handles ObjMasterizza.PreparingBurn<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add(&quot;Preparazione in corso....Tempo richiesto : &quot; &amp; nEstimatedSeconds)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong><br />
</strong></p>
<h4>Codice C#</h4>
<div class="code"><strong><br />
<br />
</strong>// evento che avviene prima di registrare. Prepara il cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void ObjMasterizza_PreparingBurn(int nEstimatedSeconds)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add((&quot;Preparazione in corso....Tempo richiesto : &quot; + nEstimatedSeconds));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Evento per la preparazione dei dati su CD</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Private Sub ObjMasterizza_AddProgress(ByVal nCompletedSteps As Integer, ByVal nTotalSteps As Integer) Handles ObjMasterizza.AddProgress<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'aggiornamento della barra <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbPreparazione.Maximum = nTotalSteps<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbPreparazione.Value = nCompletedSteps<br />
&nbsp;&nbsp;&nbsp; End Sub<strong><br />
</strong>&nbsp;</div>
<h4>Codice C#<strong><br />
</strong></h4>
<div class="code">private void ObjMasterizza_AddProgress(int nCompletedSteps, int nTotalSteps)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // aggiornamento della barra <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbPreparazione.Maximum = nTotalSteps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbPreparazione.Value = nCompletedSteps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
<br />
Evento&nbsp; block Progress l&rsquo;avanzamento di scrittura dei dati.</p>
<h4><strong>Codice VB.Net</strong><strong><br />
</strong></h4>
<div class="code">'evento che ci fornisce informazioni sullo stato della copia<br />
&nbsp;&nbsp;&nbsp; Private Sub ObjMasterizza_BlockProgress(ByVal nCompletedSteps As Integer, ByVal nTotalSteps As Integer) Handles ObjMasterizza.BlockProgress<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Maximum = nTotalSteps<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Value = nCompletedSteps<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong><br />
</strong></p>
<h4>Codice C#</h4>
<p></p>
<div class="code">// evento che ci fornisce informazioni sullo stato della copia<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void ObjMasterizza_BlockProgress(int nCompletedSteps, int nTotalSteps)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Maximum = nTotalSteps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Value = nCompletedSteps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Evento&nbsp; relative al completamento della scrittura dei dati</p>
<h4><strong>Codice VB.Net</strong><strong><br />
</strong></h4>
<div class="code">'evento che si verifica quando ha completato di copiare su cd<br />
&nbsp;&nbsp;&nbsp; Private Sub ObjMasterizza_BurnComplete(ByVal status As System.UInt32) Handles ObjMasterizza.BurnComplete<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Maximum = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Value = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add(&quot;Operazione Completata&quot;)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong><br />
<br />
</strong></p>
<h4>Codice C#<strong><br />
</strong></h4>
<div class="code">// evento che si verifica quando ha completato di copiare su cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void ObjMasterizza_BurnComplete(System.UInt32 status)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Maximum = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PgbScrittura.Value = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add(&quot;Operazione Completata&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
<br />
<br />
Evento di chiusura del disco</p>
<h4><strong>Codice VB.Net</strong><strong><br />
</strong></h4>
<div class="code">'evento per la chiusura del cd<br />
&nbsp;&nbsp;&nbsp; Private Sub ObjMasterizza_ClosingDisc(ByVal nEstimatedSeconds As Integer) Handles ObjMasterizza.ClosingDisc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add(&quot;Chiusura disco attendere...&quot; &amp; nEstimatedSeconds &amp; &quot; Secondi&quot;)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#</strong><strong><br />
</strong></h4>
<div class="code">// evento per la chiusura del cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void ObjMasterizza_ClosingDisc(int nEstimatedSeconds)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstTesto.Items.Add((&quot;Chiusura disco attendere...&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + (nEstimatedSeconds + &quot; Secondi&quot;)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
<br />
Siamo giunti quasi alla conclusione della stesura del codice.<br />
Nel momento in cui viene selezionata l&rsquo;unit&agrave; per la scrittura del cd, dobbiamo impostare la propriet&agrave; RecorderDrivers, con il nome dell&rsquo;unit&agrave; CD-Rom.<br />
Si riporta il codice delle sopraindicate operazioni.<br />
<br />
<strong><br />
</strong></p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<div class="code">Private Sub cmbdrive_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbdrive.SelectedIndexChanged<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'scelta dell'unit&agrave; per masterizzare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives(cmbdrive.SelectedIndex).ToString<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#</strong><strong><br />
</strong></h4>
<div class="code">&nbsp; private void cmbdrive_SelectedIndexChanged(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //scelta dell'unit&agrave; per masterizzare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives[cmbdrive.SelectedIndex].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Il pulsante aggiungi, dovr&agrave; inserire nel controllo listbox, il nome del file (contenuto nella casella di testo) mentre per l&rsquo;oggetto di tipo XPBurn, tramite il metodo AddFile impostiamo il percorso e nome del file da registrare ed in quale posizione sul cdrom registrarlo. Si fa presente, che nel caso si imposta un percorso&nbsp; di un file situato in sottocartelle, queste&nbsp; verranno create (se non presenti )&nbsp; nel CD, nel caso viene specificato nel secondo parameto del metodo AddFile<br />
Mentre il pulsante trova (quello con i tre puntini &ldquo;&hellip;&rdquo; ) dovr&agrave; visualizzare a video una finestra di dialogo per la selezione dei file.<br />
Qui di seguito si riportano i frammenti di codice delle suddette operazioni.<br />
<br />
<strong><br />
</strong></p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<div class="code">Private Sub btnaggiungi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnaggiungi.Click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Not System.IO.File.Exists(txtfile.Text) Then Exit Sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'aggiungo i file da copiare su cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.AddFile(txtfile.Text, txtfile.Text)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstFile.Items.Add(txtfile.Text)<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; Private Sub btntrova_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntrova.Click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim DlgApri As New OpenFileDialog()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'cerco i file da copiare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If DlgApri.ShowDialog = DialogResult.OK Then txtfile.Text = DlgApri.FileName<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<br />
<strong><br />
</strong></p>
<h4><strong>Codice C#<br />
</strong></h4>
<div class="code">private void btnaggiungi_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!System.IO.File.Exists(txtfile.Text))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // aggiungo i file da copiare su cd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.AddFile(txtfile.Text, txtfile.Text);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstFile.Items.Add(txtfile.Text);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void btntrova_Click(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenFileDialog DlgApri = new OpenFileDialog();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // cerco i file da copiare<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((DlgApri.ShowDialog() == DialogResult.OK))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtfile.Text = DlgApri.FileName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Nell&rsquo;evento click del pulsante per la scrittura dei file, dobbiamo avviare la scrittura su CD. Questo avviene tramite l&rsquo;esecuzione del metodo RecordDisk , il quale accetta due parametri, il primo, indica se effettuare un test (se impostato a true) mentre il secondo parametro, espelle il cd al termine della scrittura dei dati.<br />
Di seguito riportiamo le sopraccitate operazioni.</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Private Sub BtnCopia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCopia.Click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'true test simulazione<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'metodo che avvia la copia su cd il primo valore se &egrave; settato a true fa un test, il secondo espelle il cd a termine operazione<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.RecordDisc(False, True)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As XPBurnException<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(ex.Message)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><strong><br />
<br />
</strong></p>
<h4>Codice C#<strong><br />
</strong></h4>
<div class="code">private void BtnCopia_Click(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // true test simulazione<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // metodo che avvia la copia su cd il primo valore se &egrave; settato a true fa un test, il secondo espelle il cd a termine operazione<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjMasterizza.RecordDisc(false, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (XPBurnException ex)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(ex.Message);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>&nbsp;</p>
<p></p>
<h3>Conclusioni</h3>
<p><br />
L&rsquo;articolo ha voluto affrontare in maniera semplice ma dettagliata alcuni casi dell&rsquo;utilizzo della dll XpBurn (<a href="http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx">http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx</a>&nbsp;)&nbsp;per la registrazione dei dati su supporti dischi, quali CD.<br />
Tramite la voce Download potete scaricare oltre ai sorgenti relativo all&rsquo;articolo per entrambi i linguaggi di programmazione, anche&nbsp;i sorgenti della libreria e la guida sull&rsquo;utilizzo di tale componente.</p>
<p><br />
<a href="/contenutiupload/13/file/Masterizza.zip">&nbsp;Download</a></p>]]>
</description>
</item>
<item>
<title>La creazione di componenti in Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_la-creazione-di-componenti-in-silverligh_805.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>29/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione<strong><br />
</strong></h3>
<p>In questo articolo vedremo come creare componenti da utilizzare in vari progetti. I componenti sono delle DLL che possiamo aggiungere nei riferimenti dei nostri progetti, simili a quelle utilizzate in ambiente Windows e Asp.Net.</p>
<h3>Creazione del progetto.<strong><br />
</strong></h3>
<p>Aprite visual studio 2008 SP1, e dalla finestra File, selezionate nuovo progetto, dopo aver selezionato il linguaggio di vostro interesse selezionate il tipo di progetto Silverlight, mentre nella parte destra tra i modelli disponibili selezionate &ldquo;Libreria di classi Silverlight&rdquo; come illustrato in figura 1.<br />
&nbsp;<img height="517" width="770" alt="" src="/contenutiupload/13/image/SLComponenteFigura1.jpg" /><br />
<strong>Figura 1<br />
</strong><br />
Confermate il tutto tramite il pulsante Ok.<br />
Verr&agrave; creata un classe, rinominiamola in matematica, questa classe avr&agrave; un metodo che passando due variabili di tipo interi restituir&agrave; la somma.<br />
Di seguito si riporta il codice delle suddette operazioni per il linguaggio Visual Basic Net e C#</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Public Class Matematica<br />
&nbsp;&nbsp;&nbsp; Public Function Somma(ByVal ValoreA As Integer, ByVal ValoreB As Integer) As Integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return ValoreA + ValoreB<br />
&nbsp;&nbsp;&nbsp; End Function<br />
End Class</div>
<p>&nbsp;</p>
<h4><strong>Codice C#<br />
</strong></h4>
<div class="code">&nbsp;&nbsp;&nbsp; public class Matematica<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32 Somma(Int32 ValoreA, Int32 ValoreB)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ValoreA + ValoreB;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</div>
<p>Come visto nel procedente articolo, inseriamo in questo progetto un nuovo componente di Silverlight. Dalla finestra&nbsp; Esplora soluzione, selezionare il menu aggiungi e successivamente nuovo elemento, nella finestra che viene aperta selezionare &ldquo;controllo Utente Silverlight&rdquo;.<br />
Come controllo utilizzeremo quello preposto nell&rsquo;articolo precedente, ossia la creazione di un pulsante tondo.<br />
Qui di seguito si riporta il codice XAML.</p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel.Resources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Storyboard x:Name=&quot;Effetto&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DoubleAnimation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storyboard.TargetName=&quot;elpPulsante&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storyboard.TargetProperty=&quot;Opacity&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From=&quot;1.0&quot; To=&quot;0.0&quot; Duration=&quot;0:0:1&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoReverse=&quot;True&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RepeatBehavior=&quot;Forever&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Storyboard&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel.Resources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Ellipse Name=&quot;elpPulsante&quot;&nbsp; MouseLeftButtonDown=&quot;Ellipse_MouseLeftButtonDown&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width=&quot;200&quot; Height=&quot;100&quot;&nbsp; Fill=&quot;Blue&quot;&nbsp; Stroke=&quot;Yellow&quot; StrokeThickness=&quot;4&quot; &gt;&lt;/Ellipse&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<p><br />
Mentre qui di seguito riportiamo il codice il codice .Net, che &egrave; lo stesso dell&rsquo;articolo precedente, riguardante l'evento click sul pulsante tondo</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Private Sub Ellipse_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Effetto.Begin()<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; Public Sub Messaggio(ByVal testo As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(testo)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>Codice C#<br />
</strong></h4>
<div class="code">private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Effetto.Begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Messaggio(string Testo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(Testo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Ora che&nbsp;abbiamo &nbsp;terminato la stesura del codice, compiliamo il progetto per verificare la correttezza del codice e generare la dll. Si crea un nuovo progetto di Silverlight, tra i modelli disponibili selezioniamo &ldquo;Applicazione Silverlight&rdquo; come mostrato in figura 2,&nbsp; in questo modo possiamo utilizzare il componente appena creato.&nbsp;<br />
&nbsp;<br />
<img height="490" width="770" src="/contenutiupload/13/image/SLComponenteFigura2.jpg" alt="" /><br />
<strong>Figura 2<br />
</strong><br />
Nel progetto, aggiungi il riferimento al nostro componente, dalla finestra &ldquo;Esplorare Soluzioni&rdquo; facciamo click con il tasto destro del mouse sul nome del progetto e selezioniamo la voce Aggiungi riferimento, nella finestra che viene aperta (figura 3) selezionare la linguetta con la dicitura &ldquo;Progetti&rdquo; e tra la lista dei progetti, selezionare quello riguardante il componente creato.<br />
&nbsp;<br />
<img height="407" width="505" alt="" src="/contenutiupload/13/image/SLComponenteFigura3.jpg" /><br />
<br />
<strong>Figura 3<br />
</strong><br />
Passiamo al file Page, nel codice xaml, dopo aver digitato xmlns:Componente= selezioniamo dalla lista il nome del componente che abbiamo aggiunto al progetto, come illustrato nella figura 4.<br />
&nbsp;<br />
<img height="265" width="624" alt="" src="/contenutiupload/13/image/SLComponenteFigura4.jpg" /><br />
<br />
<strong>Figura 4<br />
</strong><br />
A questo punto, dopo il tag Grid, dobbiamo aggiungere il nostro componente, ed in particolare la classe pulsante, dopo aver digitato digitato &quot;&lt;Componente&quot;, dove Componente &egrave; il nome impostato nel tag xmlns relativo al componente,, la finestra di Visual Studio, ci visualizza le classi che abbiamo creato precedentemente(figura 5), ed in particolare la classe pulsante, quella riguardante il controllo Silverlight, mentre la classe Matematica &egrave; quella&nbsp;dove si trova il metodo per effettuare la somma di due numeri interi.</p>
<p>&nbsp;<br />
<img height="199" width="607" alt="" src="/contenutiupload/13/image/SLComponenteFigura5.jpg" /><br />
<br />
<strong>Figura 5</strong><br />
<br />
Qui di seguito si riporta il codice XAML.</p>
<div class="code">&lt;Componente:Pulsante Name=&quot;Pulsante&quot; MouseLeftButtonDown=&quot;Pulsante_MouseLeftButtonDown&quot;<br />
/&gt;&lt;Componente:Pulsante&gt;</div>
<p><br />
<br />
A questo punto non resta che scrivere il codice .net per l&rsquo;evento MouseLefDown,&nbsp; in questo evento si crea un oggetto di tipo matematica e si utilizza il metodo Messaggio della classe Pulsante, per visualizzare a video la somma di due interi utilizzando il metodo somma della classe matematica.<br />
Di seguito si riporta il codice .Net delle suddette operazoni.</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">Private Sub Pulsante_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim matematica As New SLComponente.Matematica()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comPulsante.Messaggio(&quot;La Somma di 4 + 2 = &quot; &amp; matematica.Somma(4, 2))<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#</strong></h4>
<div class="code">private void Pulsante_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SLComponenteCS.Matematica Matematica = new SLComponenteCS.Matematica();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pulsante.Messaggio(&quot;La Somma di 4 + 2 = &quot; + Matematica.Somma(4, 2));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><strong>Conclusioni.<br />
</strong><br />
L&rsquo;articolo ha voluto fornire le basi per lo sviluppo di componenti in Silverlight per entrambi i&nbsp; linguaggi di programmazione. Come si visto, la programmazione dei componente &egrave; molto flessibile ma al tempo stesso offre al programmatore enormi potenzialit&agrave; lasciandolo libero di scrivere applicazioni ben pi&ugrave; complesse di quella vista in questo articolo.<br />
Tramite la parola download potete scaricare il progetto utilizzato nell&rsquo;articolo, per entrambi i linguaggi di programmazione.<br />
<br />
<a href="/contenutiupload/13/file/SLComponente.zip">Download</a></p>
<p>&nbsp;</p>]]>
</description>
</item>
<item>
<title>Creazione di un controllo in Silverlight 2</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_creazione-di-un-controllo-in-silverlight_803.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>28/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione<strong><br />
</strong></h3>
<p>In questo articolo, vedremo la creazione di un controllo in Silverlight. Un controllo Silverlight permette al programmatore di creare dei controlli con aspetti grafici da utilizzare pi&ugrave; volte nelle proprie pagine e progetti. In effetti la sua creazione non &egrave; tanto complessa, visto che quando si crea una nuova applicazione Silverlight, il file page eredita dalla classe controls.<br />
L&rsquo;articolo vuole fornire al lettore la&nbsp;creazione di&nbsp;un semplice controllo, o meglio un pulsante tondo, che dopo aver fatto il primo click, viene impostato un effetto visivo continuo, in particolare la gradualit&agrave; dell&rsquo;opacit&agrave; del controllo fino a renderlo trasparente.</p>
<p><strong>Creazione del progetto.<br />
</strong><br />
Da visual Studio 2008 sp1, create un nuovo progetto di tipo Silverlight selezionando il modello Applicazione Silverlight come mostrato in figura 1, in questo modo, nell&rsquo;applicazione Silverlight utilizzeremo il controllo creato.</p>
<p>&nbsp;<img alt="" width="770" height="517" src="/contenutiupload/13/image/SLControllo.jpg" /><br />
<strong>Figura 1</strong><br />
Come in ogni progetto, l&rsquo;ambiente Visual Studio 2008, crea un file denominato page.xaml, in questo file effettueremo l&rsquo;utilizzo del controllo che andremo a creare.</p>
<h3>Aggiunta di un controllo</h3>
<p>Dalla finestra esplora soluzione, facciamo click con il tasto destro del mouse sul nome del progetto e selezioniamo aggiungi nuovo elemento, nella finestra che viene aperta (figura 2) selezioniamo la categoria Silverlight mentre come modello la voce Controllo utente silverlight, assegnate un nome&nbsp; a tale controllo (per esempio pulsante), confermate il tutto tramite il pulsante ok.&nbsp;</p>
<p><img alt="" width="770" height="463" src="/contenutiupload/13/image/SLControlloFigura2.jpg" /><br />
<strong>Figura 2</strong></p>
<p>Come si vede dalla pagina che viene creata, il file xaml, &egrave; identico a quello che si crea quando si seleziona nuova applicazione Silverlight.<br />
Ora non ci resta che scrivere il codice XAML e .Net per creare il nostro controllo</p>
<h3>Creazione del codice XAML per il controllo</h3>
<p>Il controllo che andremo a creare, sar&agrave; un oggetto di tipo ellipse, che visualizzer&agrave; una forma geometrica ovale, di colore blu con il bordo di colore giallo. <br />
Qui di seguito si riporta il codice di tale oggetto&nbsp; e l&rsquo;effetto che permette di renderlo sempre pi&ugrave; chiaro fino a nasconderlo per poi renderlo di nuovo visibile.<br />
</p>
<div class="code">&lt;UserControl x:Class=&quot;SLControllo.pulsante&quot;<br />
&nbsp;&nbsp;&nbsp; xmlns=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation">http://schemas.microsoft.com/winfx/2006/xaml/presentation</a>&quot; <br />
&nbsp;&nbsp;&nbsp; xmlns:x=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml">http://schemas.microsoft.com/winfx/2006/xaml</a>&quot; <br />
&nbsp;&nbsp;&nbsp; Width=&quot;400&quot; Height=&quot;300&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel.Resources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Storyboard x:Name=&quot;Effetto&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DoubleAnimation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storyboard.TargetName=&quot;elpPulsante&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storyboard.TargetProperty=&quot;Opacity&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From=&quot;1.0&quot; To=&quot;0.0&quot; Duration=&quot;0:0:1&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoReverse=&quot;True&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RepeatBehavior=&quot;Forever&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Storyboard&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel.Resources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Ellipse Name=&quot;elpPulsante&quot;&nbsp; MouseLeftButtonDown=&quot;Ellipse_MouseLeftButtonDown&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width=&quot;200&quot; Height=&quot;100&quot;&nbsp; Fill=&quot;Blue&quot;&nbsp; Stroke=&quot;Yellow&quot; StrokeThickness=&quot;4&quot; &gt;&lt;/Ellipse&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/Grid&gt;<br />
&lt;/UserControl&gt;</div>
<p><br />
&nbsp; Come si vede dal codice XAML, dopo l&rsquo;oggetto Grid, &egrave; stato aggiunto un controllo di tipo StackPanel, nel quale ci sono due oggetti, uno per l&rsquo;effetto (storyboard) e l&rsquo;altro per la forma geometrica (ellipse). <br />
Ma vediamo in dettaglio le varie propriet&agrave; del controllo Ellipse.&nbsp; La propriet&agrave; Name imposta il nome del controllo, mentre le propriet&agrave; Width e Height impostano la larghezza e l&rsquo;altezza del controllo. La propriet&agrave; Fill, imposta il colore del controllo, che con la propriet&agrave; Stroke, stabiliscono la parte grafica del controllo, quest&rsquo;ultima propriet&agrave; imposta il bordo di colore giallo. Infine la propriet&agrave; StrokeThickness imposta le dimensione del bordo del controllo.<br />
L&rsquo;ultima propriet&agrave; MouseLeftButtonDown imposta il nome del gestore dell&rsquo;evento MouseLeftButtonDown, ossia l&rsquo;evento in cui si fa click sul controllo.</p>
<h3><strong><br />
</strong>Stesura del codice .Net</h3>
<p>Dopo essersi posizionati sul nome del gestore dell&rsquo;evento, facciamo click con il tasto destro del mouse e selezioniamo la voce &ldquo;Passa al gestore eventi&rdquo;, in modo che possiamo scrivere il codice VB.Net e C# per tale evento.</p>
<h4><strong>Codice VB.Net</strong></h4>
<p></p>
<div class="code">Private Sub Ellipse_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Effetto.Begin()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>Codice C#<br />
</strong></h4>
<p></p>
<div class="code">private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Effetto.Begin();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Il frammento di codice &egrave; molto semplice, con il metodo&nbsp; Begin, dell&rsquo;oggetto StoryBoard, esegue in modo continuativo l&rsquo;effetto di dissolvenza del controllo.<br />
Sempre restando nella parte codice, scriviamo un metodo, che visualizza un messaggio a video, questo per dimostrare l&rsquo;utilizzo dei metodi, come avviene appunto nella creazione dei controlli in ambiente Windows o Web, stesso principio che si pu&ograve; applicare anche per le propriet&agrave; ed eventi.<br />
Qui di seguito si riporta il codice per la creazione di un metodo che visualizza a video un messaggio.</p>
<h4><strong>Codice VB.Net</strong></h4>
<p></p>
<div class="code">Public Sub Messaggio(ByVal testo As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(testo)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>Codice C#</strong></h4>
<p></p>
<div class="code">public void Messaggio(string Testo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(Testo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3>Creazione del codice XAML per l&rsquo;esecuzione del controllo.</h3>
<p>Ora non ci resta che testare il controllo, nel file Page.xaml, scriviamo il codice xaml per visualizzare il controllo ed il codice nel momento in&nbsp; cui viene fatto click sul controllo.</p>
<div class="code">&lt;Grid <br />
xmlns:src=&quot;clr-namespace:SLControllo&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Background=&quot;White&quot; Margin=&quot;0,50,0,0&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Grid.RowDefinitions&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowDefinition Height=&quot;Auto&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Grid.RowDefinitions&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;src:pulsante Name=&quot;ctrlPulsante&quot;&nbsp; MouseLeftButtonDown=&quot;pulsante_MouseLeftButtonDown&quot; Grid.Row=&quot;1&quot; Margin=&quot;0,15,0,0&quot;/&gt;<br />
&lt;/Grid<br />
&gt;</div>
<p><br />
<grid xmlns:src="&quot;clr-namespace:SLControllo&quot;"></grid><br />
&nbsp; Vediamo in dettaglio il codice xaml, la propriet&agrave; src del controllo grid &egrave; stata impostata con il nome del progetto, che a sua volta contiene l&rsquo;oggetto pulsante.&nbsp;Passiamo in visualizzazione codice, e scriviamo i codice .Net per tale evento.&nbsp; <br />
Nell&rsquo;evento click viene eseguito il metodo &ldquo;Messaggio&rdquo; del controllo, appena creato.<br />
Si riporta qui di seguito il frammento di codice di tali operazioni.</p>
<h4><strong>Codice VB.Net</strong></h4>
<div class="code">&nbsp;&nbsp;&nbsp; Private Sub pulsante_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrlPulsante.Messaggio(&quot;Mio Testo&quot;)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>Codice C#</strong></h4>
<div class="code">private void pulsante_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrlPulsante.Messaggio(&quot;Mio Testo&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<h3>Conclusioni<strong><br />
</strong></h3>
<p>L&rsquo;articolo ha voluto fornire delle basi per lo svliuppo di controlli in Silverlight, naturalmente resta nella creativit&agrave; del programmatore creare controlli con funzioni, effetti&nbsp; molto pi&ugrave; complessi, messi appunto dalla tecnologia Silverlight.&nbsp; <br />
Tramite la parola Download potete scaricare il file utilizzato in questo articolo.<br />
<a href="/contenutiupload/13/file/SLControllo.zip">Download</a><br />
&nbsp;</p>]]>
</description>
</item>
<item>
<title>Il controllo Calendario di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-calendario-di-silverlight-2_793.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>26/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Nell&rsquo;articolo viene illustrato l&rsquo;utilizzo del controllo Calendario, un controllo per la visualizzazione delle date. <br />
Il controllo si presta molto bene nel suo utilizzo visto le funzionalit&agrave; messe a disposizione.<br />
Qui di seguito vedremo alcune di esse.</p>
<h3>Creazione del progetto.</h3>
<p>Si crea un nuovo progetto di tipo Silverlight, aggiungiamo al progetto un controllo StackPanel, un controllo calendar ed un controllo Button, il codice xaml dev&rsquo;essere simile a quello riportato qui di seguito.</p>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basics:Calendar Name=&quot;calendario&quot;&nbsp;&nbsp;&nbsp; FirstDayOfWeek=&quot;Monday&quot;&nbsp;&nbsp; SelectionMode=&quot;MultipleRange&quot;&nbsp; DisplayDateStart=&quot;07/01/2009&quot; DisplayDateEnd=&quot;01/01/2010&quot;&nbsp;&nbsp; DisplayDate=&quot;08/11/2009&quot; SelectedDate=&quot;08/11/2009&quot;&nbsp; &gt;&lt;/basics:Calendar&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button&nbsp;&nbsp; Name=&quot;btnRileva&quot; Content=&quot;Data&quot; Click=&quot;BtnRileva_Click&quot;&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<p><br />
Ma vediamo in dettaglio le varie propriet&agrave; impostate per il&nbsp; controllo calendario.<br />
Name, imposta un nome univoco al controllo calendario, mentre la propriet&agrave; &ldquo;FirstDayOfWeek&rdquo; imposta il primo giorno della settimana. Nel nostro esempio, verr&agrave; visualizzato il primo giorno che corrisponde al luned&igrave; (valore impostato) nel caso non &egrave; presente nel mese corrente, verranno visualizzati i giorni del mese precedente, il primo di quella settimana.<br />
La propriet&agrave; SelectionMode, permette di definire la modalit&agrave; di selezione dei giorni, nel nostro caso si potranno selezionare pi&ugrave; giorni contemporaneamente. Con le propriet&agrave; DisplayDateStart e DisplayDateEnd, si imposta il range, ossia il periodo di validit&agrave; del calendario. In questo modo potremmo visualizzare nel controllo calendario solo gli anni, mesi e giorni, che sono comprese nel periodo compreso nelle due propriet&agrave;. Con la propriet&agrave; DisplayDateStart, verr&agrave; visualizzata la data da quel periodo in poi, e non prima, mentre con la propriet&agrave; DisplayDateEnd, la data limite del calendario che sar&agrave; visualizzata, oltre a tale data non potr&agrave; comparire nel calendario.<br />
Va ricordato che la data, dev&rsquo;essere del tipo mese/giorno/anno.<br />
La propriet&agrave; DispalyDate, permette di impostare la data che dev&rsquo;essere visualizzata, mentre la propriet&agrave; SelectedDate, &egrave; possibile selezionare un determinato giorno.<br />
Anche per queste due propriet&agrave;, il formato &egrave; il seguente mese/giorno/anno</p>
<h3>Codice .Net</h3>
<p>Il codice che andremo a scrivere &egrave; molto semplice, infatti visualizzeremo a video la data selezionata.<br />
Passando in modalit&agrave; codice, nell&rsquo;evento click del pulsante, inserite il codice qui di seguito per visualizzare a video la data selezionata.</p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<p></p>
<div class="code">&nbsp; Private Sub BtnRileva_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(calendario.SelectedDate.Value.ToShortDateString())<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#<br />
</strong></h4>
<div class="code"><strong><br />
</strong>private void BtnRileva_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(calendario.SelectedDate.Value.ToLongDateString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<h3><strong><br />
</strong>Conclusioni</h3>
<p>L&rsquo;uso del controllo Calendario &egrave; molto semplice, per chi ha utilizzato il controllo calendario in ambiente Asp.Net o Windows Application, trover&agrave; molto semplice il suo utilizzo.<br />
Tramite la parola download potete scaricare il file utilizzato in questo esempio.<br />
<br />
<a href="/contenutiupload/13/file/SLCalendar.zip">Download</a><br />
&nbsp;</p>]]>
</description>
</item>
<item>
<title>Il controllo DatePicket di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-datepicket-di-silverlight-2_794.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>26/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione<strong><br />
</strong></h3>
<p>Il controllo DataPicket &egrave; simile al controllo calendar, solo per il fatto che il calendario del mese o anno, viene visualizzato solo nel caso che si fa click sull&rsquo;icona rappresentativa e la data viene visualizzata in una casella.<br />
Ma vediamo in dettaglio l&rsquo;utilizzo di questo controllo.<br />
<br />
<strong>Creazione del progetto<br />
<br />
</strong>Dopo aver creato un progetto di tipo Silverlight, inserite nella parte xaml, un controllo StackPanel ed un controllo DatePicket. Qui di seguito si riporta il codice XAML, con alcune propriet&agrave; impostate.</p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basics:DatePicker&nbsp; DisplayDate=&quot;08/08/2009&quot;&nbsp; DisplayDateStart=&quot;07/01/2009&quot; DisplayDateEnd=&quot;01/01/2010&quot;&nbsp;&nbsp;&nbsp; IsTodayHighlighted=&quot;False&quot; SelectedDateChanged=&quot;DatePicker_SelectedDateChanged&quot; SelectedDateFormat=&quot;Long&quot;&nbsp; FirstDayOfWeek=&quot;Monday&quot;&nbsp; Name=&quot;dtpCalendario&quot; CalendarClosed=&quot;DatePicker_CalendarClosed&quot;&gt;&lt;/basics:DatePicker&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>Le varie propriet&agrave;, permettono di impostare alcuni parametri del controllo, per esempio la propriet&agrave; dispalydate, imposta la data da visualizzare ossia il mese e giorno che verranno visualizzati. Va ricordato, che anche in questo controllo, come in quello del calendario, il formato delle date &egrave;&nbsp;di tipo&nbsp;mese/giorno/anno.<br />
La propriet&agrave; DispalyDateStart, imposta la data in cui il calendario visualizzer&agrave; come data di inizio del calendario, prima di quella data non si potranno visualizzare altri periodi. Mentre la propriet&agrave; DisplayDateEnd, imposta la data limite in questo modo non si potr&agrave; selezionare una data&nbsp;successiva a quella impostata nella propriet&agrave;.<br />
La propriet&agrave; IsToDayHighlinghted impostata a False, fa si che nel calendario che viene aperto non &egrave; evidenziato il giorno odierno. La propriet&agrave; FirstDayOfWeek, permette di impostare l&rsquo;inizio dei giorni della settimana in un determinato giorno della settimana, nel nostro caso luned&igrave;. L&rsquo;evento SelectedDateChanged, si verifica quando viene cambiata la data, mentre l&rsquo;evento CalendarClosed, si verifica quando il calendario viene chiuso.</p>
<h3><strong><br />
Stesura del codice .Net</strong></h3>
<p><br />
Ora&nbsp; occorre scrivere il codice per la gestione degli eventi, in particolare nel momento in cui viene chiuso il calendario e quando cambia la data selezionata.<br />
Dopo aver impostato nel file xaml, l&rsquo;evento calendarClosed, passiamo in visualizzazione codice.</p>
<p>Qui di seguito riportiamo il codice in cui visualizza la data selezionata per l&rsquo;evento CalendarClosed.</p>
<p></p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<p><strong><br />
</strong></p>
<div class="code">Private Sub DatePicker_CalendarClosed(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data: &quot; &amp; dtpCalendario.SelectedDate.Value.ToShortDateString(), &quot;Data&quot;, MessageBoxButton.OK)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>Codice C#<br />
</strong></h4>
<p></p>
<div class="code">&nbsp; private void DatePicker_CalendarClosed(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data: &quot; + dtpCalendario.SelectedDate.Value.ToShortDateString(), &quot;Data&quot;, MessageBoxButton.OK);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
<br />
Come si vede dal codice illustrato precedentemente, tramite la propriet&agrave; SelectedDate, dell&rsquo;oggetto datePicket, viene visualizzata a video la data.<br />
Dopo aver impostato il nel file xaml l&rsquo;evento SelectedDateChanged, passare in visualizzazione codice e scrivere il codice riportato qui di seguito.</p>
<h4><strong>Codice VB.Net<br />
</strong></h4>
<p></p>
<div class="code">&nbsp;&nbsp;&nbsp; Private Sub DatePicker_SelectedDateChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If e.RemovedItems Is Nothing OrElse e.RemovedItems.Count = 0 Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data prima della modifica da null a&quot; &amp; e.AddedItems(0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data prima della modifica da&nbsp; &quot; &amp; e.RemovedItems(0) &amp; &quot; a &quot; &amp; e.AddedItems(0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<strong><br />
</strong></p>
<h4><strong>Codice C#</strong></h4>
<p></p>
<div class="code">private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.RemovedItems == null || e.RemovedItems.Count == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data prima della modifica da null a&quot; + e.AddedItems[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Data prima della modifica da&nbsp; &quot; + e.RemovedItems[0] + &quot; a &quot; + e.AddedItems[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Il listato del codice precedente, effettua un controllo sulla propriet&agrave; RemovedItems, di un oggetto di tipo SelectionChangedEventArgs, nel quale verifica se &egrave; la prima modifica (0) oppure no.<br />
Con la propriet&agrave; AddedItems e RemoveItems, rileviamo la data modificata e quella prima della modifica.</p>
<h3>Conclusioni<strong><br />
</strong></h3>
<p>L&rsquo;articolo ha voluto fornire le basi dell&rsquo;utilizzo di questo controllo, adatto per la gestione delle date.<br />
Tramite la parola download potete scaricare il progetto utilizzato in questo articolo, per entrambi i linguaggi di programmazione.</p>
<p><a href="/contenutiupload/13/file/SLDatePicket.zip">&nbsp;Download</a></p>]]>
</description>
</item>
<item>
<title>Il controllo RepeatButton di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-repeatbutton-di-silverlight_799.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>23/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Il controllo RepeatButton, permette di eseguire il codice situato nell&rsquo;evento click finch&egrave; si tiene premuto il pulsante. Solo nel momento in cui viene rilasciato il pulsante non viene pi&ugrave; eseguito, ma finch&eacute; si tiene premuto, il codice verr&agrave; eseguito diverse volte.<br />
La propriet&agrave; Delay di tale controllo, imposta e restituisce il tempo in millesecondi dal momento in cui viene premuto il pulsante e la prima volta che viene eseguito il codice, in pratica impostando tale propriet&agrave;, definiamo il tempo di attesa dal momento in cui viene premuto il pulsante e la prima esecuzione del codice, mentre le ripetizioni successive l&rsquo;intervallo di tempo, tra una ripetizione e l&rsquo;altra si pu&ograve; impostare il tempo tramite la propriet&agrave; Interval.<br />
Ma vediamo con un semplice esempio l&rsquo;uso di questo codice.</p>
<h3>Stesura di codice</h3>
<p>Si crea un nuovo progetto di tipo Silverlight, nella finestra che viene aperta aggiungiamo un controllo di tipo StackPanel, un controllo RepeatButton, un controllo button ed un controllo Textblock, nel quale sar&agrave; visualizzato del testo.<br />
Qui di seguito si riporta il codice XAML.</p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RepeatButton&nbsp; Content=&quot;Fai Click&quot;&nbsp;&nbsp;&nbsp;<br />
Name=&quot;rpbPulsante&quot;&nbsp; Click=&quot;RepeatButton_Click&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/RepeatButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button Name=&quot;btnClick&quot; Content=&quot;Fai Click Pulsante&quot; Click=&quot;Button_Click&quot;<br />
&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Name=&quot;txbTesto&quot;<br />
&gt;&lt;/TextBlock&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
Ma vediamo in dettaglio le varie propriet&agrave; di questo controllo.<br />
La propriet&agrave; content imposta il testo che viene visualizzato nel pulsante, la propriet&agrave; name imposta il nome univoco del controllo, mentre la propriet&agrave;&nbsp;click definisce il gestore dell&rsquo;evento click di tale controllo.<br />
Il controllo button,&nbsp;permette di fare un confronto tra i due pulsanti, mentre il controllo TextBlock, avr&agrave; il compito di visualizzare del testo a video.<br />
Stesura di Codice .Net<strong><br />
</strong>
<p>Passiamo in visualizzazione codice, occorre creare una variabile a livello di form, in modo che la possiamo utilizzare per l&rsquo;evento click del controllo repeatbutton e per il controllo button, per far vedere le differenze tra i due pulsanti.</p>
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code">Dim contaClick As Integer</div>
<p></p>
<h4><strong>C#<br />
</strong></h4>
<p></p>
<div class="code">int contaClick;</div>
<p><br />
Per l&rsquo;evento click del controllo RepeatButton, inseriamo del codice che visualizza nel controllo teblock del testo con il numero dei click eseguiti dal pulsante, dal momento in cui viene tenuto premuto il controllo repeatbutton, stesso codice da utilizzare per il controllo button<br />
<br />
Evento click del controllo RepeatButton</p>
<h4><strong>VB.Net</strong></h4>
<div class="code">Private Sub RepeatButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contaClick += 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Click numero: &quot; &amp; contaClick<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>C#</strong></h4>
<div class="code">private void RepeatButton_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contaClick += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Click numero: &quot; + contaClick;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Evento click del Controllo button.</p>
<h4><strong>VB.Net</strong></h4>
<p></p>
<div class="code">Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contaClick += 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Click numero: &quot; &amp; contaClick<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>C#<br />
</strong></h4>
<p></p>
<div class="code">private void Button_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contaClick += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Click numero: &quot;&nbsp;&nbsp; +contaClick;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h4><strong>Conclusioni</strong>:</h4>
<p>L&rsquo;articolo ha voluto illustrare l&rsquo;utilizzo del controllo RepeatButton, un controllo che permette di eseguire ripetutamente il codice situato nell&rsquo;evento click, fino al momento in cui non viene rilasciato il pulsante.</p>
<p>&nbsp;</p>]]>
</description>
</item>
<item>
<title>Il controllo Textbox di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-textbox-di-silverlight-20_792.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>22/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione<strong><br />
</strong></h3>
In questo articolo viene illustrato l&rsquo;utilizzo della casella di testo, definito tecnicamente TextBox.<br />
Il controllo Texbox, permette di gestire le informazioni infatti in tale controllo ci si pu&ograve; scrivere. Un controllo di input, in cui l&rsquo;utente pu&ograve; scrivere del testo.<br />
Ma vediamo in dettaglio l&rsquo;utilizzo di questo controllo.<br />
<h3>Codice XAML e .Net<strong><br />
</strong></h3>
Dopo aver creato un progetto di tipo Silverlight 2.0, trasciniamo nella nostra form xaml, un controllo stackpanel e&nbsp; due controlli textbox, il tutto come mostrato nel codice xaml qui di seguito.<br />
<br />
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox Name=&quot;txtNome&quot; Text=&quot;Emanuele&quot; AcceptsReturn=&quot;True&quot;&nbsp; <br />
Height=&quot;80&quot;&nbsp; KeyDown=&quot;TextBox_KeyDown&quot;&nbsp; KeyUp=&quot;TextBox_KeyUp&quot;&nbsp;&nbsp; VerticalScrollBarVisibility=&quot;Visible&quot;&nbsp; &gt;<br />
&lt;/TextBox&gt;<br />
&lt;TextBox Name=&quot;txtCognome&quot; Text=&quot;Mattei&quot; TextWrapping=&quot;Wrap&quot;&gt;&lt;/TextBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<br />
<br />
Come si vede dal codice, nel primo controllo Textbox sono state impostate alcune propriet&agrave;, come per esempio la propriet&agrave; text, che permette di impostare del testo nel controllo. La propriet&agrave; AcceptsReturn, permette il ritorno a capo nella textbox, questo vuol dire, che qualora si digita il pulsante invio (return) della tastiera, si va a capo. La propriet&agrave; height imposta l&rsquo;altezza del controllo, mentre la propriet&agrave; VerticalScrollBarVisibility&nbsp; impostata a Visible, permette di visualizzare ed utilizzare la barra di scorrimento verticale.<br />
Nel controllo, sono presenti anche due eventi, l&rsquo;evento KeyDown, si verifica nel momento in cui viene digitato il tasto mentre l&rsquo;evento KeyUp si scatena quando viene rilasciato il pulsante.<br />
Nell&rsquo;esempio di codice utilizzato per il linguaggio Visual Basic net e C#, verifichiamo che i tasti che vengono digitati siano solo lettere, e invio, in questo modo permettiamo che le caselle di testo accettano solo lettere.<br />
Per l&rsquo;altra casella di testo, notiamo che &egrave; stata impostata la propriet&agrave; TextWrapping, in questo modo, quando si digita del testo, va automaticamente a capo, quando giunge al limite della larghezza della casella di testo.<br />
<h3>Codice .Net</h3>
Passiamo in visualizzazione codice, in modo da scrivere il codice per l&rsquo;evento keyDown e KeyUp, in modo che verifica se il testo digitato &egrave; una lettera o il tasto invio.<br />
Qui di seguito si riporta il codice da utilizzare per l&rsquo;evento keyDown.<br />
<br />
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code">Private Sub TextBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (e.PlatformKeyCode &lt; 65 Or e.PlatformKeyCode &gt; 90) And (e.PlatformKeyCode &lt;&gt; 13) Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Handled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>C#</strong></h4>
<div class="code">private void TextBox_KeyDown(object sender, KeyEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((e.PlatformKeyCode &lt; 65 || e.PlatformKeyCode &gt; 90) &amp; (e.PlatformKeyCode != 13))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Handled = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
Tramite la propriet&agrave; PlatformKeyCode, verifichiamo che il codice digitato non sia diverso dalle lettere, verificando il codice Ascii del carattere digitato.<br />
Impostando la propriet&agrave; Handled dell&rsquo;oggetto KeyEventArgs a true, fa si che il carattere digitato non venga inserito nella casella di testo<br />
Mentre qui di seguito si riporta il codice da utilizzare per l&rsquo;event keyUp, in questo.<br />
<br />
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code">Private Sub TextBox_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (e.PlatformKeyCode &lt; 65 Or e.PlatformKeyCode &gt; 90) And (e.PlatformKeyCode &lt;&gt; 13) Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Solo lettere&quot;, &quot;Esempio Textbox&quot;, MessageBoxButton.OK)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>C#<br />
</strong></h4>
<p></p>
<div class="code">private void TextBox_KeyUp(object sender, KeyEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((e.PlatformKeyCode &lt; 65 || e.PlatformKeyCode &gt; 90) &amp; (e.PlatformKeyCode != 13))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Solo lettere&quot;, &quot;Esempio TextBox&quot;, MessageBoxButton.OK);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Dopo&nbsp; aver verificato che il carattere digitato, nel&nbsp;caso&nbsp;non &egrave; una lettera, visualizza un messaggio a video.</p>
<h3>Conclusioni.</h3>
<p>L&rsquo;articolo ha voluto fornire le nozioni basilari sull&rsquo;utilizzo delle caselle di testo, per chi proviene dalla tecnologia Asp.Net meglio ancora dalla programmazione per le Windows Application, non avr&agrave; difficolt&agrave; ad utilizzare questi controlli.<br />
Tramite la parola download potete scaricare il file utilizzato in questo articolo.<br />
<br />
<a href="/contenutiupload/13/file/SLTextBox.zip">Download</a></p>
<br />
<br />]]>
</description>
</item>
<item>
<title>Il controllo PasswordBox di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-passwordbox-di-silverlight-_804.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>17/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione.</h3>
<div>Il controllo PasswordBox,&nbsp; &egrave; un controllo simile ad una casella di testo, con la particolarit&agrave; il cui scopo &egrave; quello di gestire le password. Questo controllo tramite alcune propriet&agrave; e metodi, pu&ograve; tornarci utile nel caso dobbiamo gestire dei dati sensibili come le password.<br />
Vedremo un semplice utilizzo di questo controllo.</div>
<h3>Stesura del codice.</h3>
<div>Dopo aver creato un nuovo progetto di tipo Silverlight, aggiungiamo nella parte di codice XAML, un controllo stackpanel, uno di tipo password Box ed uno di tipo button, il tutto come riportato qui di seguito:</div>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;PasswordBox Name=&quot;pswTesto&quot; MaxLength=&quot;20&quot; PasswordChanged=&quot;PasswordBox_PasswordChanged&quot; Password=&quot;Parola sergreta&quot; PasswordChar=&quot;*&quot;&gt;&lt;/PasswordBox&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Button Name=&quot;btnRileva&quot; Content=&quot;Rileva&quot;&nbsp; Click=&quot;Button_Click&quot;&gt;&nbsp; &lt;/Button&gt;<br />
&lt;/StackPanel&gt;</div>
<div>
<passwordbox passwordchar="&quot;*&quot;&nbsp;&nbsp;&nbsp;" password="&quot;Parola" passwordchanged="&quot;PasswordBox_PasswordChanged&quot;" maxlength="&quot;20&quot;" name="&quot;pswTesto&quot;"></passwordbox>
<br />
<br />
Vediamo in dettaglio le varie propriet&agrave; di questo controllo.<br />
La propriet&agrave; Name imposta un nome univoco al controllo, mentre la propriet&agrave; MaxLenght imposta la lunghezza massima dei caratteri che si possono digitare, la propriet&agrave; PasswordChar, imposta il carattere simbolo che viene visualizzato per ogni lettera che viene digita,&nbsp;con la propriet&agrave; Password si imposta la parola segreta.<br />
Infine la propriet&agrave; PasswordChanged contiene il gestore dell&rsquo;evento PasswordChanged, che si scatena quando viene cambiata il testo nella casella, appena si digita un qualunque carattere.</div>
<h3>Stesura del codice .Net</h3>
<div>Passiamo in visualizzazione codice, per gestire l&rsquo;evento PasswordChanged del controllo PasswordBox e per l&rsquo;evento click del controllo button.<br />
Qui di seguito, si riporta il frammento di codice per l&rsquo;evento click del pulsante, come si vede dal codice visualizza a video la password e successivamente la modifica, in questo modo viene scatenato l&rsquo;evento PasswordChanged che a sua volta visualizza a video la nuova password.</div>
<h4>Codice VB.Net</h4>
<div></div>
<div class="code">Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(pswTesto.Password)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pswTesto.Password = &quot;PSW cambiata&quot;<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp; Private Sub PasswordBox_PasswordChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Password camabiata in: &quot; &amp; pswTesto.Password)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<div></div>
<h4>Codice C#</h4>
<div></div>
<div class="code">private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Password camabiata in: &quot;&nbsp;&nbsp; + pswTesto.Password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Button_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(pswTesto.Password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pswTesto.Password = &quot;PSW cambiata&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;</div>
<div><strong><br />
</strong></div>
<h4>Conclusioni</h4>
L&rsquo;articolo ha voluto fornire le nozioni di base di questo controllo, simile ad una casella di testo, molto utile&nbsp;per la gestione delle password.<br />
&nbsp;]]>
</description>
</item>
<item>
<title>Il controllo datagrid di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-datagrid-di-silverlight-20_796.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>16/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
In Silverlight si ha un controllo griglia, molto simile al controllo Datagrid dell&rsquo;ambiente Asp. Net o Windows Application, solo che presenta alcune limitazioni. Non per questo ci vieta di utilizzarlo in modo professionale, anzi permette ampia libert&agrave; al programmatore di rappresentare in modo molto bene i dati.<br />
L&rsquo;articolo fornisce le basi del suo utilizzo, sia per il linguaggio di programmazione VB.Net che per il linguaggio C#
<p></p>
<h3>Stesura del codice.<strong><br />
</strong></h3>
<p>Dopo aver creato un progetto di tipo Silverlight, inserite nel progetto un controllo datagrid, il file xaml dovr&agrave; essere simile a questo illustrato qui di seguito.</p>
<div class="code">&lt;data:DataGrid Name=&quot;dtgDati&quot; AlternatingRowBackground=&quot;Azure&quot;&nbsp; AutoGenerateColumns=&quot;True&quot; &gt;<br />
&lt;/data:DataGrid&gt;</div>
<p>Vediamo in dettaglio le varie propriet&agrave; impostate.<br />
Name, imposta&nbsp; il nome univoco al controllo, la propriet&agrave; alternatingRowBackground, il colore di sfondo della riga, ma quella alternata, mentre la propriet&agrave; autogenerateColumns, impostata a true, fa si che le colonne vengono generate automaticamente.</p>
<h3>Stesura del codice .Net</h3>
<p>Passiamo in visualizzare codice. Il caricamento dei dati, avviene tramite una lista di una classe, nella quale si hanno due propriet&agrave; (nome e cognome) un modo molto semplice per visualizzare dei dati.<br />
Qui di seguito si riporta la classe che avr&agrave; due propriet&agrave; di tipo string, visualizzando nella griglia il nome e d il cognome.</p>
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code"><strong><br />
</strong>Public Class Nominativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim m_nome As String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim m_cognome As String <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sub New(ByVal nome As String, ByVal cognome As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nome = nome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_cognome = cognome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Public Property Nome() As String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return m_nome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set(ByVal value As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nome = value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Set<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Property<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Public Property Cognome() As String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return m_cognome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set(ByVal value As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_cognome = value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Set<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Property<br />
&nbsp;&nbsp;&nbsp; End Class</div>
<p></p>
<h4><strong>C#</strong></h4>
<p></p>
<div class="code">&nbsp;public class Nominativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string m_nome;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Nome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return m_nome; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { m_nome = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string m_cognome;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Cognome<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return m_cognome; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { m_cognome = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Nominativo(string nome, string cognome)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.m_nome = nome;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.m_cognome = cognome;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p><br />
Creata la classe, dobbiamo creare una funzione che crea una lista di tale classe, valorizzata con opportuni dati, tale lista viene caricata nel controllo datagrid, impostando la propriet&agrave; ItemsSource del datagrid con l&rsquo;oggetto lista creato. Qui di seguito si riporta il listato di tali operazioni</p>
<p></p>
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code">Private Sub CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Nominativi As New List(Of Nominativo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nominativi.Add(New Nominativo(&quot;Emanuele&quot;, &quot;Mattei&quot;))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nominativi.Add(New Nominativo(&quot;Pinos&quot;, &quot;Maffei&quot;))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtgDati.ItemsSource = Nominativi<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>C#<br />
</strong></h4>
<div class="code"><strong><br />
</strong>&nbsp; private void CaricaDati()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List<nominativo></nominativo> nominativi = new List<nominativo></nominativo>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nominativi.Add(new Nominativo(&quot;Emanuele&quot;, &quot;Mattei&quot;));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nominativi.Add(new Nominativo(&quot;Pinos&quot;, &quot;Maffei&quot;));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtgDati.ItemsSource = nominativi;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>Ora non ci resta che avviare il progetto per vedere il caricamento della griglia con i dati impostati.</p>
<h3><strong>Conclusioni.<br />
</strong></h3>
<p><strong><br />
</strong>L&rsquo;articolo ha fornito delle semplici basi sull&rsquo;utilizzo di questo controllo, proprio per avvicinare il lettore all&rsquo;uso del datagrid che fornisce al programmatore molta autonomia.&nbsp;<br />
Per la gestione dei dati, possiamo utilizzare una fonte dati come un file xml e linq, oppure un servizio (WCF).</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Pro Silverlight 3 in C sharp</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-pro-silverlight-3-in-c-_851.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>14/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp;Scheda del libro:
<table border="1" width="30%" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Mattew MacDonald</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>$49.99</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">640</div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN13:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">978-1-4302-2381-8</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">anno di edizione:</td>
            <td>11/2009&nbsp;</td>
        </tr>
        <tr>
            <td width="146">ebook</td>
            <td>$34.99</td>
        </tr>
        <tr>
            <td width="146">ISBN10:</td>
            <td>1-4302-2381-2</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Inglese</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Apress</td>
        </tr>
    </tbody>
</table>
<p>Per coloro che utilizzano la tecnologia Silverlight o si stanno avvicinando a questo nuovo modo di fare siti web, il libro Pro Silverlight 3 in C# <a href="http://apress.com/book/view/1430223812">http://apress.com/book/view/1430223812</a>&nbsp; edito della casa editrice <a href="http://apress.com/">http://apress.com</a>&nbsp; &egrave; un ottimo libro per padroneggiare questa tecnologia. Il libro &egrave; scritto in lingua inglese ed &egrave; composto da ben 20 capitoli per circa 720 pagine.</p>
<p>Nel libro non &egrave; allegato nessun Cd-rom o dvd, i sorgenti utilizzati in questo libro si possono scaricare dal seguente sito <a href="http://apress.com/resource/bookfile/4479">http://apress.com/resource/bookfile/4479</a></p>
<p>Nei capitoli sono presenti diversi esempi di codice ed immagini a colori, si presta ben volentieri alla lettura.</p>
<p>Il libro &egrave; stato scritto da Matthew MacDonald <a href="http://www.prosetech.com/">www.prosetech.com</a>&nbsp; autore di numerosi libri ed articoli, vanta una buona preparazione ed &egrave; partecipe in varie community, a tal punto che gli &egrave; stato assegnato il riconoscimento MVP in Silverlight da Microsoft.</p>
<p>Ma vediamo in dettaglio i vari capitoli del libro.</p>
<p>Il primo capitolo, come in ogni libro che si rispetti, fornisce al lettore una valida introduzione al nuovo modo di programmare i siti web tramite Silverlight. Dopo aver fornito indicazioni sul funzionamento di Silverlight ed i vari strumenti e sull&rsquo;ambiente di sviluppo Visual Studio 2008, si passa ad un semplice esempio di codice in Silverlight. Tutti gli esempi si basano sul linguaggio di programmazione C#. Continuando a leggere il capitolo, vedremo, come compilare il nostro primo progetto in Silverlight, e di come utilizzarlo nelle nostre pagine web di tipo Asp.Net. Un capitolo che introduce in maniera completa ed esauriente il funzionamento di Silverlight, molto importante per coloro che si stanno avvicinando a questa tecnologia.</p>
<p>Con il secondo capitolo si passa al linguaggio di markup XAML, infatti alla base di Silverlight oltre al linguaggio di programmazione .Net, si utilizza XAML. Dopo una breve introduzione al significato XAML, l&rsquo;autore del libro passa alla pratica illustrando alcuni esempi di codice per far comprendere al lettore il funzionamento di XAML. Il capitolo &egrave; molto ampio, ed illustra in maniera professionale ed esauriente questo argomento. Il lettore che si avvicina per la prima volta a questo linguaggio di markup sapr&agrave; utilizzarlo con dimestichezza.</p>
<p>Nel terzo capitolo si passa ad una parte molto interessante, l&rsquo;aspetto, ossia il layout di una pagina creata in Silverlight. Dopo una breve introduzione ai controlli che ci permettono di applicare l&rsquo;aspetto alla nostra applicazione, si passa a qualche esempio codice tramite il controllo stackpanel, illustrando di questo controllo la propriet&agrave; che possiamo utilizzare per dare un certo stile alla nostra applicazione. Continuando a leggere il capitolo, si passa ai controlli wrapPanel e Dockpanel,grid e la possibilit&agrave; di personalizzare da codice l&rsquo;aspetto della pagina. La parte conclusiva di questo capitolo &egrave; dedicato alla possibilit&agrave; di applicare una barra di scorrimento laterale tramite il controllo ScrollViewr, e di visualizzare l&rsquo;applicazione a schermo intero.</p>
<p>Il quarto capitolo, riguarda sempre la personalizzazione delle applicazioni Asp.Net. In questo capitolo vedremo come creare delle propriet&agrave;, di cui venne fatto un accenno nelle prime pagine, per poi passare alla gestione degli eventi del mouse. La parte riguardante gli eventi, illustra come gestire alcuni aspetti interessati di interrazione tra l&rsquo;applicazione ed il mouse. Troviamo alcuni esempi di codice, come il mouseleftbuttonDown, mousemoved, mousewheel, il cursore e tanti altri aspetti sulla gestione del mouse. La parte conclusiva del capitolo riguarda la gestione della tastiera ed in particolare la possibilit&agrave; di intercettare i caratteri digitati.</p>
<p>Il capitolo 5, fornisce indicazioni interessanti sulla gestione dei caratteri, ossia impostare un certo tipo di font, colore, effetto ed altro, l&rsquo;utilizzo di alcuni controlli pi&ugrave; comuni, come quello image, utton, hyperlinkbutton, toggledebutton and repeatbutton, checkbox, radiobutton, tooltips, popup, listbox, combo box, tabcontrol, textbox, slider, progress bar, e datecontrols. Si precisa che in pochi casi, si descrive il controllo con esempi di codice, mentre nella maggioranza di essi viene fornita una descrizione di tale controllo senza codice.</p>
<p>Il capitolo 6, permette di comprendere l&rsquo;anatomia di un&rsquo;applicazione Silverlight. Il capitolo, vuole fornire al lettore le conoscenze per comprendere le varie fasi dell&rsquo;applicazione che si sta creando. Nelle prime pagine viene illustrato come rilevare informazioni dell&rsquo;applicazione corrente tramite apposite propriet&agrave;, come gestire le informazioni ed il passaggio dei parametri tramite il viewmodel nell&rsquo;evento di avvio (startUp) dell&rsquo;applicazione Silverlight, continuando con l&rsquo;evento di chiusura e la gestione delle eccezioni. Continuando a leggere il capitolo, viene illustrata la possibilit&agrave; di creare una finestra di attesa (splash Screen), la possibilit&agrave; di effettuare l&rsquo;installazione, di aggiornare e rimuovere l&rsquo;applicazione creata e l&rsquo;utilizzo di risorse. Un capitolo molto interessante che viene trattato poco nei libri, ma che pu&ograve; tornare utile in diverse circostanze. La navigazione di un sito &egrave; un tema molto importante, se l&rsquo;applicazione Silverlight che si sta sviluppando non &egrave; facilmente comprensibile, gli utilizzatori potrebbe non trovare le informazioni o funzionalit&agrave; da loro richiesti.</p>
<p>Nel capitolo settimo, sono illustrate interessanti tecniche per migliorare la navigabilit&agrave; delle applicazioni silverlight, utilizzando i vari controlli o aspetti, che un buon sviluppatore deve tenere a mente. Un capitolo a differenza dei precedenti molto breve, ma con importanti indicazioni.</p>
<p>Il capitolo ottavo affronta le forme geometriche, argomento spesso trattato in molti libri su Silverlight. In questo capitolo troviamo la creazione delle varie figure geometriche che possiamo realizzare tramite il linguaggio di Markup XAML. Figure quali il rettangolo, il cerchio, linee, e tanti altri, impostando il colore e gli effetti.</p>
<p>Il capitolo 9, riguarda la grafica. In questo capitolo &egrave; illustrato come manipolare immagini e testo, come applicare ad un determinato testo degli effetti grafici. Dopo una breve introduzione alle classi ed oggetti messi a disposizione da Silverlight, vedremo come manipolare del testo, applicare la trasparenza, opacit&agrave; ed altri effetti sulle immagini. Un buon capitolo che fornisce delle valide basi per lavorare con la grafica.</p>
<p>Il decimo capitolo riguarda le potenzialit&agrave; offerte da Silverlight in ambito delle animazioni. Il capitolo &egrave; interamente dedicato alla creazione di applicazioni silverlight con effetti animati. Vedremo le classi da utilizzare per creare dei filmati, lettori video e tanto altro. Il capitolo &egrave; molto vasto ed affronta in maniera esauriente questo tema, il lettore acquisir&agrave; delle buoni basi su questo argomento.</p>
<p>Il capitolo 11 viene illustrato come utilizzare la parte video, suono e deep zoom in Silverlight. Dopo una breve introduzione nelle prime pagine viene illustrato come utilizzare l&rsquo;audio nelle nostre applicazioni Silverlight. Continuando a leggere nel capitolo, si passa alla parte riguardante la possibilit&agrave; di includere nelle nostre applicazioni dei video. La parte conclusiva del capitolo &egrave; dedicata a Deep Zoom, un capitolo a differenza dei precedenti breve, ma ricco di spunti per applicazioni multimediali.</p>
<p>Il capitolo 12 si passa alla gestione degli stili nei controlli e nelle applicazioni Silverlight e la gestione dei behaviors.</p>
<p>Il capitolo 13, fornisce importanti spunti di programmazione avanzata. In questo capitolo sono presi in esame temi interessanti, come la creazione di modelli e controlli personalizzati. Nelle prime pagine viene illustrato come creare un modello e riutilizzarlo in altri progetti. L&rsquo;esempio molto semplice fa comprendere al lettore l&rsquo;importanza di creare modelli riutilizzabili. Al termine di questo argomento, si passa alla creazione di controlli personalizzati. L&rsquo;autore fornisce esaurienti nozioni e tecniche di come crearsi componenti personalizzati, che possiamo utilizzare in altri progetti.</p>
<p>Il quattordicesimo capitolo, affronta un argomento poco trattato in altri libri, ma che ha una sua importanza. In questo capitolo vedremo come interagire con la pagina web, con il codice html della pagina in cui sta girando l&rsquo;applicazione Silverlight. Il capitolo guida passo per passo il lettore ad esempi sempre pi&ugrave; complessi ed interessanti sull&rsquo;utilizzo di pagina html. Un tema importante che pu&ograve; tornare sempre utile.</p>
<p>Il capitolo 15, fornisce al lettore le basi per utilizzare nelle applicazioni Silverlight i servizi web di tipo Windows Communication Services. Il capitolo a differenza di molti altri &egrave; breve, fornisce indicazioni di base per la gestione dei servizi. Servizi che vedremo il loro utilizzo anche nei successivi capitoli.</p>
<p>Nel capitolo 16, si passa ad un tema molto interessante la gestione dei dati ed in particolare come associare ai controlli una fonte dati. Nel capitolo viene illustrato come verificare la correttezza dei dati, l&rsquo;utilizzo dei servizi web per gestire una fonte dati, l&rsquo;utilizzo di oggetti, l&rsquo;utilizzo di linq per la manipolazione dei dati, e tante altre tecniche interessanti di utilizzo di una fonte dati nelle applicazioni Silverlight. Il capitolo fornir&agrave; al lettore le adeguate competenze per gestire vari scenari di fonte dati.</p>
<p>&nbsp;Il capitolo 17 continua la parte dedica alla gestione dei dati nei controlli. Nelle prime pagine di questo capitolo vedremo come gestire la correttezza dei dati inseriti nei controlli (textblock), l&rsquo;utilizzo delle espressioni regolari, dell&rsquo;obbligatoriet&agrave; dei dati. Terminata la convalida dei dati, si passa al controllo datagrid, un controllo molto utile e potente per gestire i dati. L&rsquo;utilizzo di questo controllo viene affrontato in maniera molto approfondita illustrando tante tecniche del suo utilizzo, come l&rsquo;ordinamento, la personalizzazione delle colonne di tipo immagine, calendario e tanto altre tecniche interessanti. La parte conclusiva riguarda il controllo treeview che viene illustrato in maniera molto marginale.</p>
<p>Nel terz&rsquo;ultimo capitolo, ossia il diciottesimo, viene illustrato l&rsquo;utilizzo di Silverlight al di fuori delle pagine web, ossia di alcune tecniche di utilizzo esterno. Tecniche come la possibilit&agrave; di utilizzo di una finestra di dialogo, la scrittura e lettura di dati fisici per il download o upload dei file. Anche questo capitolo &egrave; molto breve, vengono forniti brevi accenni.</p>
<p>Il penultimo capitolo, il diciannove, riguarda il multithreading. Il capitolo contiene molti esempi di codice che illustrano i vari scenari di utilizzo per la gestione dei processi. Il capitolo &egrave; molto breve, ma i numerosi esempi di codice danno al lettore le basi del concetto di multithreading.</p>
<p>Il ventesimo ed ultimo capitolo &egrave; un capitolo dedicato alla connettivit&agrave; esterna, ossia come connettersi ad altri sistemi che espongono servizi. La gestione di XML &egrave; affrontata in maniera esauriente, includendo anche Linq. Tra i vari esempi, troviamo anche la gestione di rss, la connessione sockets e tcp, ed altri aspetti interessanti di come utilizzare Silverlight con sistemi esterni.</p>
<p>Di seguito si riportano i vari capitoli che compongono questo ottimo libro</p>
<p>1) Introducing Silverlight</p>
<p>2) XAML</p>
<p>3) Layout</p>
<p>4) Dependency Property and Routed Events</p>
<p>5) Elements</p>
<p>6) The Application Model</p>
<p>7) Navigation</p>
<p>8) Shapes and Geometries</p>
<p>9) Brushe, Transforms, and bitmaps</p>
<p>10) Animation</p>
<p>11) Sound, Video, and Deep Zoom</p>
<p>12) Styles and Behaviours</p>
<p>13) Templates and Custom Controls</p>
<p>14) Browser integration</p>
<p>15) Asp.Net Web Services</p>
<p>16) Data Binding</p>
<p>17) Data controls</p>
<p>18) Isolated Storage</p>
<p>19) Multithreading</p>
<p>20) Networking</p>
<p><b>Conclusioni</b>:</p>
<p>Un ottimo libro che fornisce al lettore un percorso formativo in costante crescita tra i vari capitoli. Gli argomenti sono affrontati in maniera esauriente, contenente numerosi esempi di codice di situazione comuni. Un libro molto importante per coloro che utilizzano gi&agrave; la tecnologia Silverlight o si stanno avvicinando. Un libro che non pu&ograve; mancare sullo scaffale di un buon programmatore. Il libro &egrave; scritto tramite il linguaggio di programmazione C#, per coloro che sono interessati alla versione relativa al linguaggio di programmazione Visual Basic .Net, possono trovare in questo sito <a href="http://apress.com/book/view/1430224274">http://apress.com/book/view/1430224274</a> il libro scritto per questo linguaggio dello stesso autore.</p>]]>
</description>
</item>
<item>
<title>Il controllo ToggleButton di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-togglebutton-di-silverlight_800.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>08/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Il controllo Togglebutton &egrave; un controllo di tipo pulsante, ma con una particolarit&agrave;, infatti questo controllo presenta tre stati proprio come un controllo checkbox, impostando la propriet&agrave; isThreestate a true permette di rilevare tre stati.<br />
Quando si fa click su questo controllo lo stato cambia e pu&ograve; avere due o tre stati di tipo spuntato, non spuntato ed Indefinito.</p>
<h3>Il codice XAML</h3>
<p>Ma vediamo in dettaglio questo controllo, dopo aver creato un nuovo progetto di tipo Silverlight, aggiungete nel codice XAML, un controllo di tipo stackpanel ed uno di tipo ToggleButton.</p>
<p></p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;ToggleButton&nbsp; Content=&quot;Fai Click&quot; Name=&quot;tbtEsegui&quot; IsChecked=&quot;false&quot; IsThreeState=&quot;True&quot; Click=&quot;ToggleButton_Click&quot; &gt;&lt;/ToggleButton&gt;<br />
&lt;/StackPanel&gt;</div>
<p></p>
<p><stackpanel></stackpanel>Come si vede dal precedente listato di codice, sono state impostate alcune propriet&agrave; per questo controllo. La propriet&agrave; content, imposta il testo che viene visualizzato nel pulsante, name il nome univoco del controllo, la propriet&agrave; IsChecked, simile a quella del controllo checkbox permette di impostare il controllo nello stato spuntato nel caso ha il valore a true oppure non spuntato se impostato a false. La propriet&agrave; IsThreeState, impostata a true permette di avere tre stati, mentre la propriet&agrave; click definisce il gestore dell&rsquo;evento click per tale pulsante.</p>
<h3><strong><br />
</strong>Il codice .Net</h3>
<p><br />
Dopo aver impostato le varie propriet&agrave;, scriviamo il codice .Net per l&rsquo;evento click, passiamo in visualizzazione codice. Nell&rsquo;evento click di tale controllo, verifichiamo tramite la propriet&agrave; ischecked&nbsp; lo stato del controllo, come valore possiamo avere true nel caso &egrave; spuntato, false non &egrave; spuntato mentre nothing nel caso &egrave; indefinito, valore che si ottiene solo nel caso che la propriet&agrave; IsThreestate &egrave; impostata a true.<br />
Qui di seguito si riporta il codice delle suddette operazioni.</p>
<h4><strong>VB.Net</strong></h4>
<div class="code">Private Sub ToggleButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If tbtEsegui.IsChecked = True Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;True&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf tbtEsegui.IsChecked = False Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;False&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Indefinito&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>C#</strong></h4>
<p></p>
<div class="code">private void ToggleButton_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tbtEsegui.IsChecked == true )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;True&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (tbtEsegui.IsChecked == false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;False&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Indefinito&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<h3>Conclusioni</h3>
<p><br />
L&rsquo;articolo, ha voluto fornire al lettore le basi per l&rsquo;utilizzo di questo controllo. Il suo utilizzo si pu&ograve; verificare in in quei scenari, in cui &egrave; richiesto una serie di click su un determinato pulsante, non solo, ma anche lo stile del pulsante come il colore o altropu&ograve; cambiare in base allo stato.</p>]]>
</description>
</item>
<item>
<title>Il controllo Slider di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-slider-di-silverlight-20_802.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>04/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3><strong>Introduzione<br />
</strong></h3>
<p><br />
Il controllo Slider permette all&rsquo;utente di selezionare un valore tramite lo spostamento di un selettore (una rettangolo) lungo la&nbsp; barra per selezionare un determinato valore.</p>
<h3><strong>Creazione del file XAML<br />
</strong></h3>
<p><br />
Ma vediamo in dettaglio questo controllo, dopo aver creato un nuovo progetto di tipo Silverlight, inserite nella parte XAML, un controllo di tipo stackpanel, un controllo di tipo Slider ed un controllo TextBlock, in quest&rsquo;ultimo controllo verr&agrave; visualizzato il valore selezionato nella barra.<br />
Qui di seguito si riporta il codice XAML, di tale dichiarazione<br />
<stackpanel></stackpanel></p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox Name=&quot;txbTesto&quot;&gt;&lt;/TextBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Slider Name=&quot;sldrAvanza&quot; Minimum=&quot;0&quot; Maximum=&quot;50&quot; ValueChanged=&quot;Slider_ValueChanged&quot; Orientation=&quot;Horizontal&quot;&nbsp; IsDirectionReversed=&quot;False&quot;&gt;&lt;/Slider&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<p><br />
Come si vede dal codice, sono state impostate alcune propriet&agrave; per il controllo Slider. La propriet&agrave; Name imposta il nome del controllo, mentre la propriet&agrave; Minimum, il valore minimo che pu&ograve; contenere il controllo, mentre la propriet&agrave; MAximum, il valore massimo della barra. <br />
La propriet&agrave; orientation, indica la direzione della barra se in orizzontale o verticale. Mentre la propriet&agrave; IsDirectionReversed indica la direzione del selettore, a true&nbsp; si trover&agrave; nella parte destra mentre impostata a false nella parte sinistra, infine la propriet&agrave; ValueChanged, indica l&rsquo;evento che viene eseguito nel momento in cui cambia il valore nella barra progressiva.</p>
<h3><strong>Stesura del codice .Net</strong></h3>
<p><br />
Per l&rsquo;evento ValueChange, visualizziamo nel controllo textBox, il valore che si sta selezionando, passiamo in visualizzazione codice e per tale evento,&nbsp; impostiamo la propriet&agrave; Text del controllo TextBox con il valore della propriet&agrave; value del controllo Slider.<br />
Qui di seguito si riporta il codice delle suddette operazioni.<br />
</p>
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code">&nbsp;&nbsp;&nbsp; Private Sub Slider_ValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Valore: &quot; &amp; sldrAvanza.Value<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p></p>
<h4><strong>C#</strong></h4>
<div class="code">private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double></double> e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTesto.Text = &quot;Valore: &quot; + sldrAvanza.Value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p></p>
<h3><strong>Conclusioni</strong></h3>
<p><br />
Questo breve articolo ha voluto fornire le basi per l&rsquo;utilizzo di un&nbsp; controllo per la selezione dei valori. Il controllo Slider, pu&ograve; tornare utile in certe situazione, molto usato in vari programmi per aumentare o diminuire l&rsquo;effetto zoom o audio, che rappresenta un buon modo di rappresentare la selezione dei valori.<br />
&nbsp;</p>]]>
</description>
</item>
<item>
<title>Recensione libro: Sql Server 2008 Guida all'uso</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-sql-server-2008-guida-a_847.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>01/12/2009 0.00.00</pubDate>
<description>
<![CDATA[
<p>Scheda del libro:</p>
<table width="30%" border="1" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Mario De Ghetto</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>&euro; 35,00</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">352 pagine 17x24 bn</div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">9788882338008</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">anno di edizione:</td>
            <td>09/2009&nbsp;</td>
        </tr>
        <tr>
            <td width="146">numero dell'edizione:</td>
            <td>1</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica.</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Italiano</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Digital LifeStylePro</td>
        </tr>
    </tbody>
</table>
<p>Nel mese di settembre la casa editrice FAG <a href="http://www.fag.it/">http://www.fag.it</a>&nbsp; ha pubblicato un libro introduttivo sul database Sql Server 2008. Il libro Sql Server 2008 guida all&rsquo;uso <a href="http://www.fag.it/scheda.aspx?ID=31008">http://www.fag.it/scheda.aspx?ID=31008</a> , &egrave; un libro, che illustra in maniera semplice e chiara l&rsquo;utilizzo di questo database, fornendo al lettore che si avvicina a questo database le conoscenze adeguate per utilizzarlo nel modo migliore.</p>
<p>Il libro &egrave; composto da ben 10 capitoli, nel libro non &egrave; presente nessun cd-rom o dvd, gli esempi del libro si possono scaricare dal seguente sito <a href="http://www.deghetto.it/blog/download/LibroSS2008/SS2008_EsempiVB.zip">http://www.deghetto.it/blog/download/LibroSS2008/SS2008_EsempiVB.zip</a></p>
<p>L&rsquo;autore di questo buon manuale di base, &egrave; scritto da Mario De Ghetto, il quale ha scritto numerosi articoli, trucchi e ben due libri. Mario De Ghetto &egrave; un MVP su Visual Basic.Net riconoscimento che assegna Microsoft alle persone che si sono distinte per impegno e professionalit&agrave; nelle community, il suo blog tecnico personale &egrave; consultabile al seguente sito qui <a href="http://deghetto.wordpress.com/">http://deghetto.wordpress.com</a>&nbsp; e qui <a href="http://community.dotnetwork.it/mario.deghetto/Default.aspx">http://community.dotnetwork.it/mario.deghetto/Default.aspx</a>&nbsp; in cui si trovano diversi frammenti di codice ed altro materiale su .Net.</p>
<p>Ma vediamo in dettaglio i vari capitoli.</p>
<p>Nel primo capitolo, vengono forniti al lettore indicazioni su risorse e siti di grande interesse su questo database., Nelle prime pagine, troviamo l&rsquo;elenco di alcune risorse ad importanti siti, dove trovare del materiale e software da utilizzare per muoversi in maniera autonoma. Continuando a leggere il capitolo sono forniti indicazioni sui requisiti hardware delle varie versioni di questo database ed altre informazioni utili. Nella parte conclusiva del capitolo, sono forniti indicazioni sull&rsquo;installazione delle varie versioni ed i vari strumenti messi da utilizzare in questo database.</p>
<p>Con il secondo capitolo si affronta un tema molto importante che ogni utilizzatore (sviluppatore o dba) deve conoscere prima di utilizzare questo database. Nel capitolo, sono forniti indicazioni interessanti riguardante l&rsquo;architettura del database, i vari strumenti messi a disposizione ed il funzionamento principale. Nel capitolo si trovano diverse illustrazione, che aiutano al lettore a comprendere l&rsquo;architettura ed il relativo funzionamento.</p>
<p>Nel terzo capitolo, sono forniti in maniera molto basilare le novit&agrave; della versione di Sql server 2008, il capitolo fornisce indicazioni su quelle funzionalit&agrave; aggiunte o ampliate, un capitolo molto ricco anche di immagini.</p>
<p>Il quarto capitolo si passa a Sql Server management Studio, lo strumento visivo di Sql Server per gestire il database. Nelle prime pagine viene fatta una breve introduzione di questo strumento, per poi proseguire con le varie funzionalit&agrave; che si possono utilizzare, come la creazione di un database di tipo sql server compact, collegarsi ad un database esistente, la barra dei menu di sql server, la barra degli strumenti standard e la finestra di esplora oggetti. Finita la parte introduttiva al database, si passa alla parte pratica, nel capitolo sono illustrate le operazioni primarie di quando si inizia ad utilizzare questo database. Vedremo come creare un nuovo database, argomento, illustrato in maniera esauriente fornendo al lettore le giuste conoscenze per comprendere questa fase. Continuando a leggere il capitolo, vedremo anche il collegamento ad un database, la creazione e modifica di una tabella e la generazione di script sql. Il capitolo fornisce al lettore adeguate conoscenze sulla creazione di un database, molto utile per coloro che non hanno dimestichezza o non conosco questo database.</p>
<p>Sempre un argomento inerente le tabelle, nel quinto capitolo sono illustrati i tipi di dati. Il capitolo affronta in maniera chiara e comprensibile l&rsquo;argomento, illustrando tutti i tipi di dati messi a disposizione dal database. Un capitolo che dar&agrave; modo al lettore di comprendere la progettazione di una tabella.</p>
<p>Con il capitolo sesto si passa ad un argomento molto importante per la gestione dei database. Le relazioni ed indici, &egrave; un tema importantissimo per la creazione di una buona base dati, il capitolo vuole fornire al lettore le conoscenze adeguate per comprendere questo tema. Nelle prime due pagine, sono forniti alcune importanti regole da tenere presente durante la creazione di una relazione. Continuando a leggere il capitolo, si passa al significato ed utilizzo della chiave primaria fornendo una valida spiegazione per poi passare ad un esempio pratico. Gli indici e le chiavi sono gli argomenti che vengono trattati in maniera esauriente e con una serie di immagini nelle pagine successive. Terminata la parte delle chiavi ed indici si passa alle relazioni, fornendo al lettore degli ottimi esempi e spiegazione sulle varie relazioni che si possono verificare durante la creazione di un database.</p>
<p>&nbsp;Il capitolo 7 illustra un argomento molto interessante ed importante, le viste e query. Dopo una breve introduzione alle viste, l&rsquo;autore illustra come utilizzare gli strumenti messi a disposizione da Sql Server 2008 per la creazione di una vista. La parte conclusiva delle viste, riguarda invece le viste di sistema, fornendo elementi di basi su quelle pi&ugrave; comuni. Terminata la parte delle viste si passa alle query, parte conclusiva e breve di questo capitolo. Si fa un accenno degli strumenti che possiamo utilizzare per la gestione delle prestazioni di una query.</p>
<p>Il capitolo ottavo &egrave; un argomento molto importante per coloro che si trovano in situazioni di utilizzare questo database in maniera molto pi&ugrave; professionale, in questo capitolo il lettore comprender&agrave; il linguaggio T-Sql. Dopo una breve introduzione al linguaggio T-SQL si passa agli elementi base, come i commenti, gli identificatori, valore nullo, gli operatori (and, or, not) le funzioni, la creazione, collegamento, modifica e cancellazione di un database, creazione, modifica e cancellazione di tabelle, viste indici, account e utenti. La parte conclusiva del capitolo &egrave; rivolta alla gestione dei permessi .</p>
<p>Il linguaggio T-Sql, viene illustrato anche nel capitolo 9. In questo capitolo sono illustrati altre situazioni di utilizzo, come la selezione dei dati tramite l&rsquo;istruzione SQL, la clausola Order by, Where, TOP, Like, All, Distinct, union, compute, oltre alle varie relazioni che si possono realizzare come le inner join, left outer join, right outer join e Foul Outer Join. Continuando a leggere questo lungo capitolo, si passa alle clausole Except e intersect, per poi proseguire con le istruzioni Select Into, Insert, update e delete.</p>
<p>Il decimo e penultimo capitolo, riguarda le Stored Procedure. Il capitolo fornisce al lettore le basi per comprendere ed utilizzare una parte molto importante di un database. Dopo una breve introduzione alle Stored Procedure, si passa alla creazione di variabili locali, alla dichiarazione print, l&rsquo;utilizzo della condizione If, la dichiarazione while, return, goto. Continuando a leggere il capitolo, si passa all&rsquo;utilizzo degli strumenti messi a disposizione dal Database Sql Server 2008, per la creazione, modifica ed esecuzione delle stored procedure, le stored procedure di sistema ed un accenno breve all&rsquo;utilizzo delle stored procedure tramite codice .Net. Anche in questo capitolo troviamo numerosi esempi di codice, per ogni argomento trattato.</p>
<p>L&rsquo;ultimo capitolo (11) si passa all&rsquo;utilizzo del database Sql Server 2008 tramite il linguaggio di programmazione Visual Basic. Dopo una breve introduzione al linguaggio Visual Basic 2008, viene illustrato come utilizzare l&rsquo;ambiente di sviluppo Visual Studio 2008, per la gestione di una fonte dati, come Sql Server 2008, il tutto tramite i wizard messi a disposizione. Il capitolo contiene numerosi immagini, in modo che il lettore che ha poca dimestichezza comprenda i vari passi. Al termine si vedr&agrave; come creare una semplice maschera di gestione dati, tramite i wizard ed i controlli messi a disposizione da Visual Studio. Proseguendo a leggere il capitolo, l&rsquo;autore illustra brevemente l&rsquo;utilizzo di alcune classi messi a disposizione da Ado.Net per la gestione dei dati, illustrando al lettore come leggere, inserire e modificare i dati, il tutto tramite le classi di ado.net e istruzioni sql.</p>
<p>&nbsp;</p>
<p>Di seguito si riportano i vari capitoli che compongono questo libro</p>
<p>&nbsp;</p>
<p>1) Primo Contatto</p>
<p>2) Architettura di Sql Server 2008</p>
<p>3) Le novit&agrave;</p>
<p>4) Sql Server management Studio</p>
<p>5) Tipi di dati</p>
<p>6) Indici e relazioni</p>
<p>7) Viste e query</p>
<p>8) Linguaggio T-Sql: DDL e DCL</p>
<p>9) Linguaggio T-Sql: DML</p>
<p>10) Stored Procedure</p>
<p>11) Sql Server e Visual Basic</p>
<h3><b>Conclusioni</b>:</h3>
<p>Un ottimo libro di base, per coloro che si avvicinano ai database ed in particolare al database Sql Server 2008. Il libro fornisce in maniera esauriente e comprensibile l&rsquo;utilizzo di questo database e le varie funzionalit&agrave; messe a disposizione. Un libro con molte immagini e ricco di esempi di codice. Gli argomenti sono trattati in maniera comprensibile. Consigliato a coloro che si stanno avvicinando a questo database o utilizzano altri database.</p>]]>
</description>
</item>
<item>
<title>Il controllo Progress Bar di Silverlight 2.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_il-controllo-progress-bar-di-silverlight_801.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>30/11/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p>Il controllo Progress bar, permette di dotare le nostre applicazioni web di una barra progressiva, in modo che l&rsquo;utente tramite tale controllo pu&ograve; verificare lo stato di una determinata situazione. Per esempio la progress bar pu&ograve; tornare utile nel momento in cui si stanno caricando dei dati, delle informazioni e quindi fornire all&rsquo;utente l&rsquo;attesa per tale circostanza.<br />
Per chi ha gi&agrave; utilizzato il controllo Progress Bar in ambiente Windows Application, trover&agrave; molto semplice il suo utilizzo.<br />
Stesura del codice XAML.<br />
Ma vediamo in dettaglio questo controllo, dopo aver creato un nuovo progetto di tipo Silverlight, aggiungete nel progetto due controlli progress bar, uno stackpanel ed un pulsante, il tutto come nel codice xaml presentato qui di seguito.</p>
<div class="code"><br />
&lt;StackPanel&gt;<br />
&nbsp;&nbsp; &lt;ProgressBar Height=&quot;20&quot;&nbsp;&nbsp;&nbsp; Foreground=&quot;Red&quot;&nbsp; Value=&quot;0&quot;&nbsp;&nbsp;&nbsp;&nbsp; Name=&quot;Pgb1&quot; IsIndeterminate=&quot;True&quot; &gt;<br />
&nbsp;&nbsp; &lt;/ProgressBar&gt;<br />
&nbsp;&nbsp; &lt;ProgressBar Height=&quot;20&quot; Maximum=&quot;100&quot; Minimum=&quot;0&quot; Name=&quot;Pgb2&quot; IsIndeterminate=&quot;False&quot;&gt;&lt;/ProgressBar&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Button Name=&quot;BtnCalcola&quot; Content=&quot;Carica&quot; Click=&quot;BtnCalcola_Click&quot;&gt;&lt;/Button&gt;<br />
&lt;/StackPanel&gt;<br />
<br />
&nbsp;</div>
Vediamo in dettaglio le varie propriet&agrave;. Sono stati aggiunti due controlli progress bar, per visualizzare il comportamento da entrambi nel caso che la propriet&agrave; isIndeterminate &egrave; impostata a false. La propriet&agrave; height imposta le dimensione della barra, in particolare l&rsquo;altezza. Mentre la propriet&agrave; ForeGround, il colore della barra.&nbsp; La propriet&agrave; Name, imposta un nome univoco al controllo, mentre la propriet&agrave; value il valore della barra. La propriet&agrave; IsIndeterminate, rende la barra con un certo aspetto, infatti impostata a true, visualizza in modo continuativo l&rsquo;avanzamento della barra, mentre impostando a false la propriet&agrave; IsIndeterminate si pu&ograve; vedere l&rsquo;avanzamento progressivo, man mano che viene incrementato la propriet&agrave; value. Impostando la propriet&agrave; IsIndeterminate a false, occorre impostare anche le propriet&agrave; Maximum (massimo) e Minimum (minimo)&nbsp; di tale controllo. Come si pu&ograve; vedere nella seconda barra, tali propriet&agrave; sono state impostate con il valore massimo e minimo.<br />
Il controllo button, permette tramite l&rsquo;evento click di incrementare il valore della propriet&agrave; value di tali barre.
<h3><strong>Stesura del codice .Net</strong></h3>
<p><br />
Passiamo in visualizzazione codice, nell&rsquo;evento click del pulsante, bisogna incrementare ogni volta che si fa click sul pulsante di 10 la propriet&agrave; value, in questo modo, si pu&ograve; notare nella seconda barra l&rsquo;avanzamento progressivo nella barra.<br />
Si riporta il codice delle suddette operazioni.</p>
<h4><strong>VB.Net<br />
</strong></h4>
<div class="code"><strong><br />
</strong>Private Sub BtnCalcola_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pgb1.Value += 10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pgb2.Value += 10<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<h4><strong>C#</strong></h4>
<p></p>
<div class="code">private void BtnCalcola_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pgb1.Value += 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pgb2.Value += 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<h3>Conclusioni:</h3>
L&rsquo;articolo ha voluto fornire le basi per l&rsquo;utilizzo di questo controllo.&nbsp; Un controllo da utilizzare in diverse situazioni.]]>
</description>
</item>
<item>
<title>Introduzione ai controlli Silverlight 2.0   il controllo ScrollViewer</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_introduzione-ai-controlli-silverlight-20_762.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>30/11/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Il controllo ScrollViewer permette di aggiungere ai vari controlli una barra di scorrimento in orizzontale o verticale, in questo modo, si pu&ograve; scorrere il contenuto del controllo.</font><o:p></o:p></p>
<h3>Creazione del progetto</h3>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><b style=""><font face="Calibri"><o:p></o:p></font></b></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Dopo aver creato un progetto di tipo silverlight, trasciniamo dalla barra degli strumenti il controllo scrollviewer a seguire il controllo Stackpanel e poi due button. Ricordiamo che il controllo ScrollViewer si pu&ograve; applicare a qualsiasi controllo e non solo allo stackPanel.</font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Qui di seguito riportiamo un esempio di codice XAML.<br />
<br />
</font></p>
<div class="code">&lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ScrollViewer Height=&quot;200&quot; Width=&quot;200&quot;&nbsp;&nbsp;&nbsp; HorizontalAlignment=&quot;Center&quot;&nbsp;&nbsp; HorizontalScrollBarVisibility=&quot;Visible&quot;&nbsp; BorderBrush=&quot;Blue&quot;&nbsp;&nbsp;&nbsp; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel&nbsp; Height=&quot;200&quot; Width=&quot;200&quot;&nbsp;&nbsp; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button Content=&quot;Verifica&quot; Height=&quot;100&quot; Width=&quot;100&quot;&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button Content=&quot;Verifica2&quot; Height=&quot;100&quot; Width=&quot;100&quot;&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ScrollViewer&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/Grid&gt;</div>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"></p>
<br />
<span style="color: rgb(0, 0, 0);"><font face="Calibri">Dopo l&rsquo;oggetto Grid, &egrave; stato aggiunto il controllo ScrollViewer, impostando alcune propriet&agrave;</font></span>
<p></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Height e Width riguardano le dimensioni, mentre horizontalalignment impostato al valore &ldquo;center&rdquo; visualizza i controlli al centro. La propriet&agrave; HorizontalScrollbarVisibility impostata a Visible permette di visualizzare anche la barra orizzontale. Infine la propriet&agrave; BorderBrush impostata al valore Blue,&nbsp; imposta il bordo del controllo di colore blue.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">All&rsquo;interno del controllo Scrollviewer, troviamo il stackpanel e due controlli di tipo button, in questo modo avremo la barra di scorrimento nella nostra applicazione Silverlight.</font></span></p>
<h3>Conclusioni.</h3>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Il controllo ScrollViewer permette di visualizzare le barre di scorrimento per i controlli in cui viene applicato, utilizzato non solo per il controllo StackPanel ma anche per altri controlli come per esempio il controllo image. Un controllo molto semplice da utilizzare</font></span></p>]]>
</description>
</item>
<item>
<title>I controlli Silverlight 2.0  Radiobutton</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-silverlight-20--radiobutton_760.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>19/11/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>Introduzione</h3>
<p style="margin-bottom: 0cm;">Vedremo l&rsquo;utilizzo del controllo di opzione ossia del RadioButton di Silverlight 2.0. Il controllo radiobutton, permette di avere una lista di valori selezionabile tramite un cerchio posto in prossimit&agrave; di tale voce, permettendo la selezione univoca.</p>
<p style="margin-bottom: 0cm;">I controlli radiobutton sono utilizzati per selezionare in una lista di valori una determinata voce, escludendo la possibilit&agrave; di selezionarli altri.</p>
<p style="margin-bottom: 0cm;">La selezione &egrave; univoca, ossia non &egrave; possibile avere due o pi&ugrave; voce selezionate, almeno ch&eacute; non &egrave; il programmatore a permettere ci&ograve;.</p>
<h3><span style="display: none;" id="1258460791568S">&nbsp;</span>Creazione del progetto</h3>
<p style="margin-bottom: 0cm;">Ma vediamo in dettaglio questo controllo, dopo aver creato un progetto di tipo silverlight, dalla barra degli strumenti aggiungiamo il controllo radiobutton. Aggiungiamo anche un controllo stackpanel, in questo modo potremmo avere pi&ugrave; controlli radiobutton, allineati uno sotto l&rsquo;altro. Aggiungiamo anche un pulsante.</p>
<p style="margin-bottom: 0cm;">Di seguito si riporta il codice XAML per tali esempio</p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Rosso&quot; x:Name=&quot;Rosso&quot; Checked=&quot;RadionButto_Checked&quot; IsChecked=&quot;true&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Verde&quot; x:Name=&quot;Verde&quot; Checked=&quot;RadionButto_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Giallo&quot;&nbsp; x:Name=&quot;Giallo&quot; Checked=&quot;RadionButto_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button Content=&quot;Valore&quot; x:Name=&quot;BtnValore&quot; Click=&quot;BtnValore_Click&quot; &gt;&lt;/Button&gt;<br />
&lt;/StackPanel&gt;</div>
<br />
&nbsp;
<p style="line-height: 100%; margin-bottom: 0cm;"></p>
<p style="margin-bottom: 0cm;"></p>
<span style="color: rgb(0, 0, 0);">Come si vede dal frammento di codice, la propriet&agrave; content, visualizza il testo del controllo, mentre la propriet&agrave; IsChecked, indica se tale controllo &egrave; selezionato o no. In questo modo, eseguendo il progetto, sar&agrave; possibile fare la selezione di un solo valore della lista, mentre impostando la propriet&agrave; GroupName, possiamo creare pi&ugrave; liste, in cui si possono selezionare valori da una parte e dall&rsquo;altra. Le altre propriet&agrave; sono x:Name in cui viene impostato il nome univoco del controllo, mentre checked l&rsquo;evento che si scatenal al momento che viene fatto click su tale controllo.</span>
<p></p>
<h3><strong><span style="color: rgb(0, 0, 0);">Stesura di codice.</span></strong></h3>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Vediamo qui di seguito il codice per rilevare il valore del nome del controllo selezionato</span></p>
<h4>Codice VB.Net</h4>
<div class="code">'Variabile<br />
Dim nomeControllo As String&nbsp; <br />
<br />
'Evento Checked dei controlli radionbutton<br />
Private Sub RadionButto_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim rdbSceltaControllo As RadioButton = CType(sender, RadioButton)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nomeControllo = rdbSceltaControllo.Name<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
<br />
'Evento click del pulsante<br />
<br />
Private Sub BtnValore_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(nomeControllo)<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
&nbsp;</div>
<span style="color: rgb(0, 0, 0);">
<h4><br />
Codice C#</h4>
<div class="code">//Variabile<br />
string nomeControllo = &quot;&quot;;<br />
<br />
//Evento ckecked dei controlli radiobutton<br />
private void RadionButto_Checked(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RadioButton rdbSceltaControllo = sender as RadioButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rdbSceltaControllo == null) return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nomeControllo = rdbSceltaControllo.Name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;//Evento click del pulsante<br />
private void BtnValore_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(nomeControllo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p style="margin-bottom: 0cm;"><br />
</p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Come si vede dal codice per l&rsquo;evento checked del controllo radiobutton otteniamo un oggetto di tipo radiobutton, e poi impostiamo la variabile, con il nome del controllo.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Le altre righe si commentano da sole, gi&agrave; viste in precedenza.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">La propriet&agrave; GroupName.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Con la propriet&agrave; GroupName, possiamo impostare gruppi di liste, in modo di avere pi&ugrave; liste e quindi la possibilit&agrave; di selezionare n valori</span>.</p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Qui di seguito si riporta il codice XAML.<br />
<br />
<br />
</span></p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Rosso&quot; x:Name=&quot;Rosso&quot; Checked=&quot;RadionButto_Checked&quot; IsChecked=&quot;true&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Verde&quot; x:Name=&quot;Verde&quot; Checked=&quot;RadionButto_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Giallo&quot;&nbsp; x:Name=&quot;Giallo&quot; Checked=&quot;RadionButto_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button Content=&quot;Valore&quot; x:Name=&quot;BtnValore&quot; Click=&quot;BtnValore_Click&quot; &gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Nero&quot; GroupName=&quot;Colori&quot; x:Name=&quot;Nero&quot; Checked=&quot;RadionButton_Checked&quot; IsChecked=&quot;true&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Bianco&quot; GroupName=&quot;Colori&quot; x:Name=&quot;Bianco&quot; Checked=&quot;RadionButton_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RadioButton Content=&quot;Blu&quot;&nbsp; GroupName=&quot;Colori&quot;&nbsp; x:Name=&quot;Blu&quot; Checked=&quot;RadionButton_Checked&quot; &gt;&lt;/RadioButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<br />
<p style="line-height: 100%; margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Come si vede dopo il controllo button, sono stati aggiunti altri controlli di tipo radiobutton, ma questa volta &egrave; stata impostata la propriet&agrave; GroupName in modo che sia possibile selezionare anche i valori di questa lista, che fanno riferimento ad un determinato gruppo. Impostando la propriet&agrave; GroupName, possiamo creare n liste di valori ed avere la possibilit&agrave; di selezionare vari valori. Nel nostro esempio xaml, si hanno due liste.</span></p>
<p style="margin-bottom: 0cm;"></p>
<h4><span style="color: rgb(0, 0, 0);">Stesura del codice.</span></h4>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Come per l&rsquo;evento checked visto precedentemente, il codice non cambia.</span></p>
<h4>Codice VB.Net</h4>
<div class="code">Private Sub RadionButton_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim rdbSceltaControllo As RadioButton = CType(sender, RadioButton)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nomeControllo = rdbSceltaControllo.Name<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<br />
<h4>Codice C#</h4>
<br />
<div class="code">private void RadionButton_Checked(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RadioButton rdbSceltaControllo = sender as RadioButton;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rdbSceltaControllo == null) return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nomeControllo = rdbSceltaControllo.Name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<br />
<br />
&nbsp;
<h3><span style="color: rgb(0, 0, 0);">Conclusioni</span></h3>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 0);">Tramite la parola Download, potete scaricare il file utilizzato in questo articolo. Il controllo radiobutton pu&ograve; tornare utile nel caso si devono fare delle liste in cui per ogni lista &egrave; possibile selezionare un solo valore.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Un esempio tipico di questo&nbsp;controllo pu&ograve; essere la lista del pranzo di un hotel ossia una lista di primi piatti, un'altra di secondi piatti ed una relativo al contorno, in questo modo l&rsquo;utente dovr&agrave; selezionare un tipo di menu in base alla scelta dei primi, secondi e contorni.</span></p>
<p style="margin-bottom: 0cm;"><a href="/contenutiupload/13/file/RadioButtonSL.zip"><span style="color: rgb(0, 0, 0);">Download</span></a><br />
&nbsp; </p>
</span>]]>
</description>
</item>
<item>
<title>I controlli di Silverlight 2.0  il controllo StackPanel</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-di-silverlight-20--il-contro_763.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>02/11/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3>&nbsp;<b>Introduzione</b></h3>
<p style="margin-bottom: 0cm;">Il controllo StackPanel, permette di avere un pannello, in modo da utilizzare pi&ugrave; controlli in maniera ordinata.</p>
<p style="margin-bottom: 0cm;">Tale controllo, pu&ograve; tornare utile in diversi situazione, nell&rsquo;articolo vedremo alcune propriet&agrave; ed il suo utilizzo.</p>
<h3><b>Il codice XAML</b></h3>
<p style="margin-bottom: 0cm;">Dalla barra degli strumenti, trasciniamo nella parte di codice XAML, il controllo StackPanel. A seguire impostiamo alcune propriet&agrave; (come riportato nel codice seguente) ed aggiungiamo un controllo di tipo button.</p>
<p style="margin-bottom: 0cm;">Il tutto dev&rsquo;essere come riportato nel codice seguente</p>
<p style="margin-bottom: 0cm;"></p>
<div class="code">&lt;StackPanel Background=&quot;Azure&quot; x:Name=&quot;StPPannello&quot; Height=&quot;150&quot;&nbsp; KeyDown=&quot;StackPanel_KeyDown&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width=&quot;200&quot; &gt;<br />
&lt;Button x:Name=&quot;btnAzione&quot;&nbsp;&nbsp; Content=&quot;Azione&quot;&nbsp; &gt;&lt;/Button&gt;<br />
&lt;/StackPanel&gt;</div>
<p style="margin-bottom: 0cm;"><big><small>Vediamo in dettaglio le varie propriet&agrave; del controllo stackpanel, la propriet&agrave; background imposta il colore di sfondo del controllo, x:name imposta un nome univoco al controllo, in modo che si possa identificare. Le propriet&agrave; Height e Width, permettono di impostare le dimensioni del controllo.</small></big></p>
<p style="margin-bottom: 0cm;">Mentre l&rsquo;evento KeyDown, viene scatenato nel momento in cui viene digitato un tasto della tastiera.</p>
<p style="margin-bottom: 0cm;">Tra i tag da notare il&nbsp;<stackpanel></stackpanel>controllo di tipo button.<font color="#0000ff"><font color="#0000ff"> </font></font></p>
<h3><b>Stesura del codice.</b></h3>
<p style="margin-bottom: 0cm;">In questa parte vediamo il codice per il linguaggio Visual C# e Visual Basic relativo all&rsquo;evento KeyDown del controllo StackPanel.</p>
<p style="margin-bottom: 0cm;">Dopo aver generato nel file xaml il gestore dell&rsquo;evento keydown, posizioniamoci sopra con il mouse e dal menu di scelta rapida (tasto del mouse) selezioniamo la voce &ldquo;Passa al gestore eventi&rdquo; in questo modo si passa alla visualizzazione del codice.</p>
<p style="margin-bottom: 0cm;">Qui di seguito si riporta il codice .Net per entrambi i linguaggi.<br />
</p>
<h4>Codice VB.Net<br />
</h4>
<div class="code">Private Sub StackPanel_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If e.Key = Key.F1 Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim btnPulsante As New Button<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btnPulsante.Content = &quot;Test&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btnPulsante.Name = &quot;test&quot; &amp; StPPannello.Children.Count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddHandler btnPulsante.Click, AddressOf btnPulsante_click<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StPPannello.Children.Add(btnPulsante)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
</div>
<h4>Codice C#</h4>
<div class="code">private void StackPanel_KeyDown(object sender, KeyEventArgs e)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.Key == Key.F1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button btnPulsante = new Button();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btnPulsante.Content = &quot;Test&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btnPulsante.Name = &quot;test&quot; + StPPannello.Children.Count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btnPulsante.Click += new RoutedEventHandler(btnPulsante_Click);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StPPannello.Children.Add(btnPulsante);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}</div>
<p style="margin-bottom: 0cm;"><br />
<br />
Ma vediamo nel dettaglio il codice.</p>
<p style="margin-bottom: 0cm;">La condizione &quot;IF&quot;&nbsp;verifica se il tasto digitato &egrave; F1, in tal caso crea un oggetto di tipo pulsante, imposta la propriet&agrave; name e content e gli attribuisce un gestore di evento all&rsquo;evento click del pulsante.</p>
<p style="margin-bottom: 0cm;">Tramite il metodo add della propriet&agrave; children, viene aggiunto al controllo stackpanel l&rsquo;oggetto pulsante.</p>
<h3><b>Il gestore dell&rsquo;evento click del pulsante</b></h3>
<p style="margin-bottom: 0cm;">Di seguito si riporta il codice per la gestione dell&rsquo;evento click del pulsante creato in precedenza a run time.</p>
<p style="margin-bottom: 0cm;">Il codice .net, crea un oggetto di tipo pulsante, impostandolo con l&rsquo;oggetto sender, il cast che viene fatto (per vb.net tramite la parola chiave trycast, mentre per C# tramite la parola chiave AS) restituisce l&rsquo;oggetto sender di tipo button, nel caso che si scatena un eccezione, verr&agrave; restituito null. Una volta ottenuto l&rsquo;oggetto viene visualizzato a video il nome del controllo pulsante su cui si &egrave; fatto click.</p>
<p style="margin-bottom: 0cm;">Si riporta il codice per il linguaggio VB.Net e C#.</p>
<h4>Codice VB.Net</h4>
<p style="margin-bottom: 0cm;"></p>
<div class="code">Private Sub btnPulsante_click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim pulsante As Button = TryCast(sender, Button)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If pulsante Is Nothing Then Exit Sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(pulsante.Name)<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p style="margin-bottom: 0cm;"></p>
<h4>Codice C#</h4>
<p style="margin-bottom: 0cm;"></p>
<div class="code">void btnPulsante_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button pulsante = sender as Button;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pulsante == null) return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(pulsante.Name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p style="margin-bottom: 0cm;"><br />
</p>
<h3><b>Conclusioni.</b></h3>
<p style="margin-bottom: 0cm;">Le funzionalit&agrave; messe a disposizione da questo controllo sono molteplici permettendo al programmatore di variare e di utilizzarlo con una vasta flessibilit&agrave;. Nell&rsquo;articolo &egrave; stata illustrata un basilare utilizzo di questo controllo non solo a livello di design ma anche tramite codice .Net</p>
<p style="margin-bottom: 0cm;">Tramite la parola download potete scaricare il file utilizzato in questo articolo.</p>
<p style="margin-bottom: 0cm;"><a href="/contenutiupload/13/file/StackPanelSL.zip">Download</a><font color="#0000ff"><br />
</font></p>]]>
</description>
</item>
<item>
<title>I controlli di Silverlight 2.0  TextBlock</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-di-silverlight-20--textblock_761.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>26/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3><b><font face="Calibri">Introduzione</font></b></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><b><font face="Calibri"><o:p></o:p></font></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Il controllo TextBlock permette di visualizzare del testo, rappresenta un etichetta, per chi utilizza la tecnologia Asp.net, pu&ograve; essere utilizzato come la label in Asp.Net.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Molto utile nel caso che dobbiamo creare un'interfaccia di tipo scheda, ma il suo utilizzo varia in diversi architetture.</font></p>
<h3><b><font face="Calibri">Il codice xaml</font></b><b><font face="Calibri"><o:p></o:p></font></b></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Dopo aver trascinato dalla barra degli strumenti il controllo TextBlock ed impostato alcune propriet&agrave;, viene visualizzata a video del testo, che al passaggio del mouse, viene cambiatoo l'aspetto del puntatore del mouse.</font></p>
<span style="line-height: 115%; font-family: 'Calibri','sans-serif'; font-size: 11pt">Qui di seguito riportiamo un semplice codice XAML, di utilizzo di questo controllo</span>.<br />
<br />
<div class="code">&lt;TextBlock <br />
Text=&quot;Esempio textBlock&quot; TextAlignment=&quot;Center&quot; FontSize=&quot;16&quot; Cursor=&quot;Hand&quot;&nbsp; MouseLeftButtonDown=&quot;TextBlock_MouseLeftButtonDown&quot; Height=&quot;50&quot;&nbsp; TextDecorations=&quot;Underline&quot;&nbsp;&nbsp; &gt;<br />
&lt;/TextBlock &gt;</div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Ma vediamo in dettaglio il codice xaml.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">La propriet&agrave; text, permette di impostare il testo, mentre la propriet&agrave; TextAligment, allinea il testo, nel nostro esempio al centro.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">La propriet&agrave; FontSize, imposta le dimensione di testo, impostando la propriet&agrave; Cursor con il valore hand visualizza il puntatore del mouse<span>&nbsp; </span>a forma di mano quando ci si avvicina alla scritta, simile ad un collegamento internet. </font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">La propriet&agrave; height visto anche negli esempi precedenti, imposta la dimensione del controllo, mentre la propriet&agrave;&nbsp;textdecorations impostata con il valore underline rende la scritta sottolineata.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Infine l&rsquo;evento MouseLeftButtonDown, si verifica nel momento in cui viene fatto click con il mouse sinistro del mouse.</font></p>
<br />
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><b><font face="Calibri">Stesura del codice .Net<o:p></o:p></font></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Per l&rsquo;evento MouseLeftButtonDown, viene eseguito del codice .Net, l&rsquo;esempio &egrave; molto banale, visualizza a video un semplice messaggio.</font></p>
<h4>Codice VB.Net</h4>
<div class="code">Private Sub TextBlock_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Click sulla scritta&quot;)<br />
End Sub</div>
<br />
<h4>Codice C#</h4>
<br />
<div class="code">private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Click sulla scritta&quot;);<br />
}</div>
<br />
<br />
<br />
<br />
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><b><font face="Calibri">Conclusioni:<o:p></o:p></font></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Un semplice articolo che ho voluto fornire le basi del controllo textblock, un controllo che permette di visualizzare del testo.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font face="Calibri">Tramite la parola Donwload potete scaricare l&rsquo;esempio utilizzato in questo articolo, per entrambi i linguaggi di programmazione.</font></p>
<a href="/contenutiupload/13/file/TextBlockSL.zip">Download</a><br />
<br />
<br />
<br />]]>
</description>
</item>
<item>
<title>I controlli di Silverlight 2.0 il controllo checkbox</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-di-silverlight-20-il-control_755.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>20/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h3><b style=""><font face="Calibri">Introduzione</font></b></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><b style=""><font face="Calibri"><o:p></o:p></font></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Continua la serie di articoli dedicati allo sviluppo web con la tecnologia Silverlight 2.0.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Dopo il controllo Button, in questo articolo viene illustrato l&rsquo;utilizzo del controllo checkbox, un controllo che permette di selezionare uno o pi&ugrave; dati da una determinata lista.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Gli stati che si possono avere con questo controllo, sono checked ed unchecked, mentre l&rsquo;evento click viene generato quando si fa click su tale controllo, sia in fatto di spuntare che non.</font></p>
<h3><b style=""><font face="Calibri">Il controllo</font></b></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><b style=""><font face="Calibri"><o:p></o:p></font></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Si crea un nuovo progetto silverlight applicazione, e dalla finestra che viene aperta, lasciamo l&rsquo;opzione che ci viene indicata, ossia &ldquo;aggiungi un nuovo progetto web Asp.net alla soluzione per ospitare Silverlight&rdquo; e<span style="">&nbsp; </span>nel menu di scelta rapida, riportata nella parte inferiore lasciamo i valori di default, ossia &ldquo;Progetto applicazione web Asp.Net&rdquo;</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Dalla barra degli strumenti, trasciniamo il controllo checkbox, ne inseriamo ben tre, va ricordato, che prima di tali controlli &egrave; stato aggiunto il controllo StackPanel che ne abbiamo gi&agrave; discusso in un precedente articolo, con questo controllo possiamo applicare pi&ugrave; controlli in maniera ordinata.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Dopo aver aggiunto i tre checkbox, aggiungiamo un controllo button, il tutto dev&rsquo;essere simile alla figura 1.</font></p>
<br />
<img width="275" height="113" alt="" src="/contenutiupload/13/image/CheckBoxSL.png" /><br />
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><strong><font face="Calibri">Figura 1</font></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Qui di seguito, si riporta il codice xaml di tali controlli.</font></p>
<div class="code"><font face="Calibri">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;CheckBox Content=&quot;Mela&quot;&nbsp; IsChecked=&quot;true&quot; IsThreeState=&quot;True&quot;&nbsp; Checked=&quot;Controllo_Checked&quot;&nbsp; Unchecked=&quot;Controllo_Unchecked&quot;&nbsp; x:Name=&quot;Mela&quot;&nbsp; &gt;&lt;/CheckBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;CheckBox Content=&quot;Pera&quot; x:Name=&quot;Pera&quot; Checked=&quot;Controllo_Checked&quot;&nbsp; Unchecked=&quot;Controllo_Unchecked&quot;&gt;&lt;/CheckBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;CheckBox Content=&quot;Banana&quot; x:Name=&quot;Banana&quot; Checked=&quot;Controllo_Checked&quot; Unchecked=&quot;Controllo_Unchecked&quot;&gt;&lt;/CheckBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button&nbsp;&nbsp; x:Name=&quot;Verifica&quot; Content=&quot;Verifica&quot; Click=&quot;Button_Click&quot;&nbsp; Width=&quot;100&quot; Height=&quot;50&quot;&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
</font></div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><o:p><font face="Calibri"><br />
</font></o:p></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Vediamo in dettaglio il codice per il checkbox.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Come per il controllo button, per impostare il testo, si utilizza la propriet&agrave; content, mentre la propriet&agrave; ischecked che accetta due valori (true e false) permette di impostare il controllo con la spunta se viene impostato con il valore a true.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">La propriet&agrave; isThreestate, permette di avere il controllo in tre stati, con la possibilit&agrave; di visualizzare il simbolo -.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">L&rsquo;evento checked ed unChecked, simile per i tre controlli checketed, viene scatenato quando&nbsp;al controllo viene applicata la spunta (checked) e unchecked quando gli si toglie la spunta.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Dopo aver digitato checked, scriviamo Controllo_Checked e digitiamo il pulsante tab della tastiera in modo che viene generato tale evento.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Mentre per l&rsquo;evento Uncked, digitiamo il testo Controllo_Uncked.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Ora passiamo all&rsquo;evento click del pulsante, in questo caso, viene visualizzata un messaggio a video per indicare quali sono i controlli con la spunta e quali no.</font></span></p>
<h4><span style="color: rgb(0, 0, 0);"><font face="Calibri">Qui di seguito si riporta il codice .Net<br />
<br />
</font><strong><font face="Calibri">Codice VB.Net<br />
<br />
</font></strong></span></h4>
<div class="code"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Dim testoChecket As String = &quot;&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim testoUncketed As String = &quot;&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Mela.IsChecked = True Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket = &quot;Mela&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed = &quot;Mela&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</font></span> <span style="color: rgb(0, 0, 0);"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Pera.IsChecked = True Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket += &quot; Pera&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed += &quot; Pera&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</font></span> <span style="color: rgb(0, 0, 0);"><font face="Calibri"> </font>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Banana.IsChecked = True Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket += &quot; Banana&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed += &quot; Banana&quot;</font></p>
<font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Il controllo Selezionato &egrave;: &quot; &amp; testoChecket)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Il controllo deselezionato&egrave;: &quot; &amp; testoUncketed)</font></span></div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"></p>
<strong><span style="color: rgb(0, 0, 0);"><font face="Calibri">Codice C#</font></span></strong><span style="color: rgb(0, 0, 0);"><font face="Calibri"><br />
</font></span>
<p></p>
<div class="code">string testoChecket = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string testoUncketed = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Mela.IsChecked == true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket = &quot;Mela&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed = &quot;Mela&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Pera.IsChecked == true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket += &quot; Pera&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed += &quot; Pera&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Banana.IsChecked == true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoChecket += &quot; Banana&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testoUncketed += &quot; Banana&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Il controllo Selezionato &egrave;: &quot; + testoChecket);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&quot;Il controllo deselezionato&egrave;: &quot; + testoUncketed);</div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="color: rgb(0, 0, 0);"><font face="Calibri"><br />
Come si vede dal codice precedente, tramite la propriet&agrave; isChecked rileviamo se il controllo &egrave; stato spuntato o no.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Ora passiamo all&rsquo;evento checked in questo caso, in base al nome del controllo selezionato cambiamo il colore di sfondo del pulsante.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Dopo aver rilevato l&rsquo;oggetto selezionato,verifichiamo il nome del controllo, impostando il colore rosso per le mele, verde per la pere e giallo per le banane.<span style="">&nbsp; </span>Prima di impostare la propriet&agrave; background dell&rsquo;oggetto pulsante verificare che non sia nullo, in quanto all&rsquo;avvio dell&rsquo;applicazione, il codice potrebbe essere eseguito ed in tale circostanza il controllo non &egrave; detto che sia stato gi&agrave; caricato.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">L&rsquo;oggetto solidcolorBrush verr&agrave; passato alla propriet&agrave; background, sempre l&rsquo;oggetto solidColorBush, impostiamo la propriet&agrave; color con un determinato colore.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Da notare che a differenza del codice C#, &egrave; stato utilizzata una If, ma si pu&ograve; utilizzare benissimo la parola chiave select case.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Qui di seguito si riporta il codice .Net<br />
<br />
<strong>Codice VB.Net</strong><br />
<br />
</font></span></p>
<div class="code">'in base al tipo di check cambio il colore del pulsante<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim oggettoCheck As CheckBox = CType(sender, CheckBox)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'oggetto sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim sfondo As New Windows.Media.SolidColorBrush<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'verifico che il pulsante sia attivo, in fase di avvio dell'applicativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Verifica Is Nothing Then Exit Sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'verifico quale controllo &egrave; stato spuntato ed imposto lo sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If oggettoCheck.Name = &quot;Mela&quot; Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Windows.Media.Colors.Red<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf oggettoCheck.Name = &quot;Pera&quot; Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Windows.Media.Colors.Green<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Windows.Media.Colors.Yellow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</div>
<span style="color: rgb(0, 0, 0);"><font face="Calibri">
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><br />
<strong>Codice C#</strong></p>
<div class="code">//verifico che il pulsante sia attivo, in fase di avvio dell'applicativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Verifica == null) return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //in base al tipo di check cambio il colore del pulsante<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckBox oggettoCheck = (CheckBox)sender;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //oggetto sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SolidColorBrush sfondo = new SolidColorBrush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifico quale controllo &egrave; stato spuntato ed imposto lo sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (oggettoCheck.Name)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case &quot;Mela&quot;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Colors.Red;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case &quot;Pera&quot;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Colors.Green;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case &quot;Banana&quot;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Colors.Yellow;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
</font></span>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><o:p><font face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Mentre per l&rsquo;evento unCkecked, viene riportato il colore dello sfondo del pulsante, al colore iniziale ossia griglio. Anche in questo caso, una volta ottenuto l&rsquo;oggetto a cui si &egrave; verificato l&rsquo;evento uncketd, impostiamo la propriet&agrave; background, con il colore griglio. </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Qui di seguito si riporta il codice .Net<br />
<br />
<strong>Codice VB.Net</strong><br />
<br />
</font></span></p>
<div class="code">Dim oggettoCheck As CheckBox = CType(sender, CheckBox)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'oggetto per il colore di sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim sfondo As New Windows.Media.SolidColorBrush<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'verifico che il pulsante sia attivo, in fase di avvio dell'applicativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Verifica Is Nothing Then Exit Sub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color = Windows.Media.Colors.Gray&nbsp;&nbsp; ' colore<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo</div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri"><br />
<strong>Codice C#<br />
</strong><br />
</font></span></p>
<div class="code">CheckBox oggettoCheck&nbsp;&nbsp; = (CheckBox)sender;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //oggetto per il colore di sfondo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SolidColorBrush&nbsp; sfondo = new SolidColorBrush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifico che il pulsante sia attivo, in fase di avvio dell'applicativo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Verifica == null) return; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfondo.Color =&nbsp; Colors.Gray;&nbsp;&nbsp; //colore<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Verifica.Background = sfondo;</div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><o:p><font face="Calibri">&nbsp;</font></o:p></p>
<h3><span style="color: rgb(0, 0, 0);"><font face="Calibri"><b style="">Conclusioni</b>:</font></span></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Si &egrave; visto come utilizzare il controllo Checkbox, come impostare le propriet&agrave; ed utilizzare gli eventi ckecked ed unchecked, che si scatenano quando viene applicata la spunta oppure no. Inoltre si sono visti le classi per la gestione dei colori. Le propriet&agrave; ed eventi messi a disposizione dal controllo Checkbox, sono molte permettendo un valido utilizzo di questo controllo. </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Tramite la parola Download potete scaricare il file contenente il codice VB.Net e C#, utilizzato in questo articolo.</font></span><font face="Calibri"><br />
<br />
<a href="/contenutiupload/13/file/CheckBoxSL.zip">Download</a></font></p>]]>
</description>
</item>
<item>
<title>I controlli di Silverlight   Listbox</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-di-silverlight---listbox_757.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>20/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h2><b>Introduzione</b></h2>
<p style="margin-bottom: 0cm;">Il controllo listbox, permette di visualizzare una serie di valori, e poterne selezionare uno della lista- Una lista contenente testo e/o immagini</p>
<p style="margin-bottom: 0cm;">Vedremo come applicare ad una listbox del testo, anche in fase di esecuzione, inoltre come aggiungere per ogni riga immagini e testo. L&rsquo;articolo fornir&agrave; le basi per muoversi in maniera autonoma nell&rsquo;uso di questo controllo il tutto con il linguaggio di programmazione Visual Basic Net e C#.</p>
<h3><b>Aggiunta del controlo al file xaml con alcuni elementi</b></h3>
<p style="margin-bottom: 0cm;">Qui di seguito si riporta del codice xaml contenente alcuni elementi.<br />
<br />
&lt;ListBox&nbsp;&nbsp; SelectionChanged=&quot;lstLista_SelectionChanged&quot;&nbsp;&nbsp; x:Name=&quot;lstLista&quot;&gt;<br />
&lt;ListBoxItem IsSelected=&quot;True&quot; Content=&quot;Pasta&quot; /&gt;<br />
&lt;ListBoxItem Content=&quot;Pizza&quot; /&gt;<br />
&lt;ListBoxItem Content=&quot;Gelati&quot; /&gt;<br />
&lt;ListBoxItem Content=&quot;Acqua&quot; /&gt;<br />
&lt;ListBoxItem Content=&quot;Carne&quot; /&gt;<br />
&lt;/ListBox&gt;<br />
<br />
<span style="color: rgb(0, 0, 0);">La propriet&agrave; x:name imposta il nome, mentre SelectionChanged, riguarda l&rsquo;evento che viene scatenato nel caso si seleziona un elemento diverso da quello in cui &egrave; selezionato.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">All&rsquo;interno degli elementi </span>
<listbox></listbox>
<span style="color: rgb(0, 0, 0);">si trova l&rsquo;elemento </span>
<listboxitem></listboxitem>
<span style="color: rgb(0, 0, 0);">il quale permette di visualizzare del testo nella lista.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">La propriet&agrave; IsSelectd impostata a True, imposta l&rsquo;elemento selezionato quando viene avviato il progetto, mentre la propriet&agrave; Content, visualizza il testo nel controllo listbox.</span></p>
<h3>Stesura del codice</h3>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">A questo punto scriviamo del codice, per l&rsquo;evento SelectionChanged, in particolare, visualizzeremo a video il testo selezionato.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Qui di seguito si riporta il codice in .Net per visualizzare a video il testo selezionato.</span></p>
<h4>Codice VB.Net</h4>
<div class="code">If lstLista Is Nothing Then Return<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim item As New ListBoxItem()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item = lstLista.SelectedItem<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(item.Content.ToString())</div>
<h4><span lang="en-US">Codice C#<b><br />
</b></span></h4>
<div class="code"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><span lang="en-US">if (lstLista == null) return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ListBoxItem Item = lstLista.SelectedItem&nbsp; as ListBoxItem;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(Item.Content.ToString());<br />
</span></font></font></span></div>
<p style="line-height: 100%; margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Esaminiamo pi&ugrave; in dettaglio il codice.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">La prima riga, verifica che l&rsquo;oggetto lista non &egrave; null per poter continuare, ci&ograve; si verifica all&rsquo;avvio del nostro progetto.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">La riga successiva, crea un oggetto di tipo listboxitem, il quale viene valorizzato, impostandogli il valore presente nella propriet&agrave; SelectedItem del controllo Listbox.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Con la propriet&agrave; Content, si ottiene il testo dell&rsquo;elemento selezionato.</span><span style="color: rgb(0, 0, 0);"> </span></p>
<h3>Aggiunta di nuovi elementi</h3>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Aggiungiamo nel nostro progetto un pulsante, in maniera che al click di tale controllo, possiamo aggiungere elementi al nostro controllo listbox, creato in precedenza.</span></p>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">Di seguito si riporta il codice XAML.<br />
<br />
<br />
</span></p>
<div class="code">&lt;Button <br />
x:Name=&quot;btnAggiungi&quot; Content=&quot;Aggiungi&quot; Width=&quot;100&quot; Height=&quot;30&quot; Click=&quot;btnAggiungi_Click&quot;&gt;<br />
&lt;/Button<br />
&gt;</div>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><br />
Passando in visualizzazione codice, scriviamo il codice .Net (Vb.Net e C#) che permette di aggiungere nuovi elementi alla nostra lista. <br />
Qui di seguito si riporta il codice .net, per entrambi i linguaggi.<br />
<br />
</font></font></span></p>
<h4>Codice VB.Net</h4>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><br />
</font></font></span></p>
<div class="code">Dim Elemento As New ListBoxItem()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Elemento.Content = &quot;Cornetti&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstLista.Items.Add(Elemento)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstLista.SelectedIndex = 2</div>
<h4>Codice C#</h4>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><br />
</font></font></span></p>
<div class="code">ListBoxItem Elemento = new ListBoxItem();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Elemento.Content = &quot;Cornetti&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstLista.Items.Add(Elemento);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lstLista.SelectedIndex = 2;</div>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2">Esaminiamo il codice, anche se non &egrave; tanta difficile comprendere il suo funzionamento.<br />
Nella prima riga, viene creato un oggetto di tipo listboxitem, che sar&agrave; l&rsquo;elemento da aggiungere al controllo listbox.<br />
<br />
Nella riga successiva, impostiamo la propriet&agrave; Content con del testo.<br />
Mentre la terza riga, utilizzando il metodo add della propriet&agrave; items, che accetta un valore di tipo oggetto, aggiungiamo al controllo l&rsquo;elemento creato. <br />
La riga di codice in cui viene impostata la propriet&agrave; SelectedIndex con il valore 2, indica che il secondo dell&rsquo;elemento della lista (ricordarsi di avere almeno tre elementi) viene selezionato.<br />
<br />
</font></font></span></p>
<h3>Creazione di una listbox con immagini e testo.</h3>
Mentre precedentemente &egrave; stata creata un controllo contenente solo del testo, in questa parte vediamo come visualizzare tra gli elementi della lista, anche un immagine e del testo.<br />
Di seguito si riporta il codice XAML, che contiene immagine e testo<br />
<br />
<div class="code">&lt;ListBox&nbsp;&nbsp;&nbsp;&nbsp; x:Name=&quot;lstListaImmagini&quot; SelectionChanged=&quot;lstListaImmagini_SelectionChanged&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image&nbsp;&nbsp; Stretch=&quot;None&quot;&nbsp; Source=&quot;CF.jpg&quot;&gt;&lt;/Image&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text=&quot;Elemento 1&quot; &gt;&lt;/TextBlock&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image&nbsp;&nbsp; Stretch=&quot;None&quot;&nbsp;&nbsp; Source=&quot;CF.jpg&quot;&gt;&lt;/Image&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text=&quot;Elemento 2&quot; &gt;&lt;/TextBlock&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListBox&gt;</div>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><br />
Come si vede dal codice dopo il tag &lt;listbox&gt;&nbsp; &egrave; stato aggiunto un oggetto di tipo StackPanel, il quale ognuno di essi rappresenta un elemento della lista.<br />
Al suo interno, abbiamo due oggetto, uno di tipo image, mentre l&rsquo;altro di tipo TextBlock.<br />
Per il controllo image, abbiamo impostato la propriet&agrave; stretch a none, in modo che l&rsquo;immagine viene visualizzata con le dimensioni reali, mentre la propriet&agrave; source, indica il nome del file (nel nostro caso si trova nella stessa cartella dove si trova il file XAP) immagine che verr&agrave; visualizzata.<br />
Per l&rsquo;oggetto TextBlock, invece impostiamo la propriet&agrave; Text, con del testo.<br />
Per il controllo Listbox, abbiamo impostato oltre alla propriet&agrave; name, anche l&rsquo;evento SelectionChanged, che si verifica nel momento in cui cambia la selezione dell&rsquo;elemento della lista, in questo evento, visualizziamo a video il testo dell&rsquo;elemento selezionato.<br />
<br />
</font></font></span></p>
<h3>Rilevare il testo nella listbox con immagini</h3>
<p style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2">Il codice riportato qui di seguito riguarda la gestione dell&rsquo;evento SelectionChange, questo codice (per il linguaggio Visual Basic Net e C#)&nbsp; rileva il testo dell&rsquo;elemento selezionato.<br />
Si riporta il codice .net per entrambi i linguaggi<br />
<br />
</font></font></span></p>
<h4>Codice VB.Net</h4>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim stpPannello As New StackPanel<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stpPannello = lstListaImmagini.SelectedItem<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim txbTextBlock As New TextBlock<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txbTextBlock = CType(stpPannello.Children(1), TextBlock)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(txbTextBlock.Text)<span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2"><br />
<br />
</font></font></span></div>
<h4>Codice C#</h4>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StackPanel stpPannello = lstListaImmagini.SelectedItem as StackPanel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBlock txbTextBlock = stpPannello.Children[1] as TextBlock;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(txbTextBlock.Text);</div>
<span style="color: rgb(0, 0, 0);"><font face="Courier New, serif"><font size="2">
<h3></h3>
<p>Esaminiamo il frammento di codice appena visto.<br />
Nella prima riga di codice, viene creato un oggetto StackPanel, che sar&agrave; l&rsquo;elemento selezionato.<br />
Successivamente, tramite la propriet&agrave; SelectItem, valorizziamo l&rsquo;oggetto stackPanel precedentemente creato.<br />
Successivamente, si crea un oggetto di tipo TextBlock, il quale viene valorizzato con l&rsquo;oggetto restituito dalla propriet&agrave; Children dell&rsquo;oggetto StackPanel. <br />
Considerando che gli array partano da 0, il secondo elemento (appunto il textblock, inserito nel file xaml) avr&agrave; come indice 1 per la propriet&agrave; Children, nel quale si trovano tutti i controlli che ne fanno parte.<br />
La propriet&agrave; Text, restituisce il testo dell&rsquo;elemento selezionato, che appunto in indice 1 &egrave; un controllo di tipo textblock.</p>
<p>Riportiamo tutto il codice XAML<br />
<br />
Questo &egrave; il codice completo relativo al file XAML</p>
<p style="margin-bottom: 0cm;"></p>
<div class="code">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBox&nbsp;&nbsp; SelectionChanged=&quot;lstLista_SelectionChanged&quot;&nbsp;&nbsp; x:Name=&quot;lstLista&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBoxItem IsSelected=&quot;True&quot; Content=&quot;Pasta&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBoxItem Content=&quot;Pizza&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBoxItem Content=&quot;Gelati&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBoxItem Content=&quot;Acqua&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBoxItem Content=&quot;Carne&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name=&quot;btnAggiungi&quot; Content=&quot;Aggiungi&quot; Width=&quot;100&quot; Height=&quot;30&quot; Click=&quot;btnAggiungi_Click&quot;&gt;&lt;/Button&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBox&nbsp;&nbsp;&nbsp;&nbsp; x:Name=&quot;lstListaImmagini&quot; SelectionChanged=&quot;lstListaImmagini_SelectionChanged&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image&nbsp;&nbsp; Stretch=&quot;None&quot;&nbsp; Source=&quot;CF.jpg&quot;&gt;&lt;/Image&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text=&quot;Elemento 1&quot; &gt;&lt;/TextBlock&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image&nbsp;&nbsp; Stretch=&quot;None&quot;&nbsp;&nbsp; Source=&quot;CF.jpg&quot;&gt;&lt;/Image&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text=&quot;Elemento 2&quot; &gt;&lt;/TextBlock&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListBox&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;</div>
<p></p>
<p><strong>Conclusioni</strong><br />
<br />
Il controllo listbox, pu&ograve; tornare molto utile, per presentare una lista di valori, che a volte non &egrave; detto che sia solo testo. La tecnologia Silverlight 2.0 permette una grande variet&agrave; di manipolazioni, permettendo di rendere le nostre applicazioni web, graficamente molto pi&ugrave; accattivanti e con un nuovo modo di interagire con l&rsquo;utente in maniera pi&ugrave; professionale e reale.<br />
Tramite la parola Download, potete scaricare il file di progetto per entrambi i linguaggi utilizzato in questo articolo.</p>
<p style="margin-bottom: 0cm;"><a href="/contenutiupload/13/file/ListBoxSL.zip">Download</a></p>
</font></font></span>]]>
</description>
</item>
<item>
<title>Esportare un gridview in Word, tramite un linkbutton nel footer</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_esportare-un-gridview-in-word-tramite-un_710.aspx</link>
<category>.Net Framework</category>
<author>Emanuele Mattei</author>
<pubDate>16/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h4><b><br />
</b>Introduzione</h4>
<p></p>
In questo articolo, vedremo come esportare un controllo gridview in Microsoft Word 2007, tramite la tecnologia Asp.Net 3.5.<br />
La gridView, sar&agrave; dotato di un pulsante nel footer (Figura 1)&nbsp; di tipo linkbutton, il quale avr&agrave; il compito di esportare la griglia in formato Microsoft Word.
<p></p>
<p><img height="134" width="176" src="http://www.iprogrammatori.it/contenutiupload/13/GridViewEsportaWord.JPG" alt="" /><br />
<strong>Figura 1</strong></p>
<h4>Predisposizione della pagina</h4>
<p>Dopo aver selezionato nuovo progetto web, da Visual Studio 2008, entriamo nella parte sorgente html della pagina web, in alto nell'intestazione inseriamo il seguente parametro alla pagina.</p>
<div class="code">EnableEventValidation=&quot;false&quot;</div>
<p><br />
Terminato ci&ograve;, passiamo in visualizzazione designer, ed inseriamo un controllo gridiview, il controllo gridview avr&agrave; due colonne, nella prima verr&agrave; visualizzata la descrizione di un determinato prodotto, mentre nella seconda colonna, l'importo di tale prodotto. Dopo aver impostato la propriet&agrave; showfooter a true del controllo gridview, passiamo in visualizzazione codice html, per personalizzare le colonne della griglia.<br />
La colonna Descrizione, sar&agrave; di tipo template field, mentre la colonna &nbsp;&egrave; di tipo classica, ossia boundfield.<br />
Di seguito si riporta il frammento di codice della griglia.<br />
</p>
<div class="code">&nbsp; &lt;asp:GridView ID=&quot;GridView1&quot; runat=&quot;server&quot; AutoGenerateColumns=&quot;False&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CellPadding=&quot;4&quot; ForeColor=&quot;#333333&quot; GridLines=&quot;None&quot; ShowFooter=&quot;True&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RowStyle BackColor=&quot;#EFF3FB&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateField HeaderText=&quot;Descrizione&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Label ID=&quot;lblDescrizione&quot; runat=&quot;server&quot; Text='&lt;%# Eval(&quot;Descrizione&quot;) %&gt;'&gt;&lt;/asp:Label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FooterTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:LinkButton ID=&quot;lnkWord&quot; runat=&quot;server&quot; OnClick=&quot;LnkEsportaWord_Click&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text=&quot;Esporta Word&quot;&gt;&lt;/asp:LinkButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/FooterTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateField&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundField DataField=&quot;Importo&quot; HeaderText=&quot;Importo&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FooterStyle BackColor=&quot;#507CD1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;PagerStyle BackColor=&quot;#2461BF&quot; ForeColor=&quot;White&quot; HorizontalAlign=&quot;Center&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SelectedRowStyle BackColor=&quot;#D1DDF1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;#333333&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HeaderStyle BackColor=&quot;#507CD1&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;EditRowStyle BackColor=&quot;#2461BF&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;AlternatingRowStyle BackColor=&quot;White&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/asp:GridView&gt;</div>
<p><br />
Come si vede dal codice html precedente, abbiamo una colonna di tipo templateField, nella quale si trova un altro oggetto di tipo itemTemplate, al cui interno, un oggetto di tipo label.<br />
La propriet&agrave; Text, ossia la visualizzazione del testo, viene impostato tramite Eval(&ldquo;Descrizione&rdquo;) che &egrave; il nome della colonna della fonte dati a cui sar&agrave; associato il controllo GridView.<br />
Sempre per la templetaField, si noti un altro oggetto di tipo FooterTemplate, in questo modo, possiamo personalizzare il footer con i controlli di sono gradimento, in questo caso con il controllo linkbutton. Nell'attributo onClick dell'oggetto linkbutton, viene impostato la funzione evento di tale controllo, in questo modo quando viene fatto click su tale controllo sar&agrave; eseguito la funzione a cui fa riferimento<br />
La colonna successiva, &egrave; di tipo boundfield.</p>
<h4>Stesura di codice.</h4>
<p>Terminata la progettazione della nostra pagina web, ora non ci resta che scrivere il codice per esportare la griglia in formato Microsoft Word.<br />
Nel load della Form, inseriamo il seguente codice, per il caricamento della griglia.</p>
<p><strong>VB.Net</strong></p>
<div class="code">Dim dttDati As New DataTable<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtcDescrizione As New DataColumn(&quot;Descrizione&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtcImporto As New DataColumn(&quot;Importo&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcDescrizione)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcImporto)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtrRiga As DataRow = dttDati.NewRow()</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Descrizione&quot;) = &quot;Hard Disk&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Importo&quot;) = 100.3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Descrizione&quot;) = &quot;Mouse&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Importo&quot;) = 10.4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Descrizione&quot;) = &quot;Crediti precedenti&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga(&quot;Importo&quot;) = -5.2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttDati<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</div>
<p><strong>C#<br />
</strong></p>
<div class="code">DataTable dttDati = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn dtcDescrizione = new DataColumn(&quot;Descrizione&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataColumn dtcImporto = new DataColumn(&quot;Importo&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcDescrizione);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Columns.Add(dtcImporto);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow dtrRiga = dttDati.NewRow();</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Descrizione&quot;] = &quot;Hard Disk&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Importo&quot;] = 100.3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Descrizione&quot;] = &quot;Mouse&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Importo&quot;] = 10.4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga = dttDati.NewRow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Descrizione&quot;] = &quot;Crediti precedenti&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtrRiga[&quot;Importo&quot;] = -5.2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dttDati.Rows.Add(dtrRiga);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dttDati;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind();</div>
<p>Ora non ci resta che creare la funzione che viene avvita al click del controllo linkbutton, il codice riportato qui di seguito, tramite gli oggetti stringWriter e htmlTextWriter, trasforma il contenuto html in uno streaming formato Microsoft Excel, dopo aver impostato il tipo di contenuto ed il nome del file.<br />
<br />
<br />
<strong>VB.Net</strong></p>
<p></p>
<div class="code">&nbsp; Protected Sub LnkEsportaWord_Click(ByVal sender As Object, ByVal e As EventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Clear()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Buffer = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = &quot;application/ms-word&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.AddHeader(&quot;content-disposition&quot;, &quot;attachment;filename=NomeFile.doc&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Charset = &quot;&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim swr As New System.IO.StringWriter()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim htw As New System.Web.UI.HtmlTextWriter(swr)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.RenderControl(htw)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(swr.ToString())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.End()<br />
&nbsp;&nbsp;&nbsp; End Sub</div>
<p><br />
<strong>C#</strong><br />
</p>
<div class="code">&nbsp;protected void LnkEsportaWord_Click(Object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Clear();</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Buffer = true;</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = &quot;application/ms-word&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.AddHeader(&quot;content-disposition&quot;, &quot;attachment;filename=NomeFile.doc&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Charset = &quot;&quot;;</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.StringWriter swr = new System.IO.StringWriter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(swr);</div>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.RenderControl(htw);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(swr.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.End();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<p>&nbsp;</p>
<p>Prima di testare la nostra pagina, dobbiamo creare l'ovverrides dell'evento della verifica del rendering, della pagina, per evitare che si possano verificare problemi.</p>
<p><br />
<strong>VB.Net </strong><br />
<br />
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As System.Web.UI.Control)</p>
<p>&nbsp;&nbsp;&nbsp; End Sub</p>
<p><strong>C#</strong></p>
<p>&nbsp;public override void VerifyRenderingInServerForm(Control control)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;Non ci resta che eseguire la nostra applicazione, ed fare una prova.</p>
<h4>Conclusioni:</h4>
<p><br />
L'articolo ha voluto illustrare al lettore, la possibilit&agrave; di ampliare il controllo gridview, con l'aggiunta di un oggetto di tipo linkbutton, per l'esportazione della griglia in formato Microsoft Word.<br />
La funzionalit&agrave; di esporta griglia, pu&ograve; tornare utile in diversi contesti.<br />
Tramite la parola download &egrave; possibile scaricare il file d'esempio utilizzato in questo articolo.</p>
<p><a href="/contenutiupload/13/file/GridViewExportWord.zip">Download</a></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"></p>]]>
</description>
</item>
<item>
<title>I controlli silverlight 2.0 hyperlinkbutton</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-silverlight-20-hyperlinkbutt_754.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>07/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><b style=""><font face="Calibri"><o:p></o:p></font></b></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Nel caso che si voglia utilizzare un controllo di tipo pulsante iperlink, ossia a collegamento ipertestuale il controllo HyperlinkButton &egrave; quello pi&ugrave; indicato.</font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Il controllo permette di visualizzare del testo o un immagine di tipo collegamento ipertestuale, in questo modo ,quando viene fatto click su tale controllo verr&agrave; aperto un sito web.</font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Ma vediamo pi&ugrave; nel dettaglio questo controllo.</font></p>
<h3>Creazione del progetto.</h3>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><b style=""><font face="Calibri"><o:p></o:p></font></b></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Dopo aver creato un progetto di tipo Silverlight, trascinare dalla barra degli strumenti il controllo</font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Hyperlinkbutton, ne utilizzeremo altri tre, in modo da fare alcune prove.</font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Calibri">Di seguito si riportano i codice xaml</font></p>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"></p>
<p></p>
<div class="code"><span style="color: rgb(0, 0, 0);"><font face="Calibri">&lt;StackPanel&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HyperlinkButton Content=&quot;Sito Web&quot; NavigateUri=&quot;<a href="http://www.dotnetromacesta.org">http://www.dotnetromacesta.org</a>&quot;&nbsp;&nbsp; x:Name=&quot;SitoCommunity&quot; TargetName=&quot;_Blank&quot;&gt;&lt;/HyperlinkButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HyperlinkButton Content=&quot;Email&quot; NavigateUri=&quot;<a href="mailto:emanuelemattei@dominio.it">mailto:emanuelemattei@dominio.it</a>&quot;&nbsp; &gt;&lt;/HyperlinkButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HyperlinkButton Content=&quot;Link dinamico&quot; NavigateUri=&quot;<a href="http://blog.shareoffice.it/emanuele">http://blog.shareoffice.it/emanuele</a>&quot; Click=&quot;HyperlinkButton_Click&quot;&nbsp; &gt;&lt;/HyperlinkButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HyperlinkButton&nbsp; NavigateUri=&quot;<a href="http://www.dotnetromacesta.org">http://www.dotnetromacesta.org</a>&quot;&nbsp; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HyperlinkButton.Content&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Image Source=&quot;CF.jpg&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/HyperlinkButton.Content&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/HyperlinkButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<br />
</font></span></div>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri"><br />
Il primo controllo, permette la navigazione del sito tramite una nuova finestra o scheda.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Con la propriet&agrave; NavigateUri, impostiamo il collegamento ipertestuale, va ricordato che deve iniziare con http://, mentre la propriet&agrave; targetname, permette di impostare il tipo di apertura del sito, in questo caso (_blank) apre il sito in una nuova finestra. Come per il codice html, anche qui possiamo indicare altri valori, come _self, _top, _parent.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Nel secondo&nbsp;esempio invece, viene aperto nel client di posta elettronica predefinito, un nuovo messaggio in modo che possiamo inviare l&rsquo;email.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Nel terzo caso, invece viene utilizzato l&rsquo;evento click sul controllo, in modo da cambiare dinamicamente il percorso del sito web. </font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Infine nell&rsquo;ultimo esempio, tramite il tag </font></span><font face="Calibri"><hyperlinkbutton.content></hyperlinkbutton.content></font><span style="color: rgb(0, 0, 0);"><font face="Calibri">impostiamo un immagine al controllo in modo da visualizzare un immagine al posto del testo.</font></span></p>
<h3>Informazioni da codice .Net<b style=""><font face="Calibri"><o:p></o:p></font></b></h3>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">In questa parte, vedremo, come cambiare dinamicamente il collegamento ipertestuale da codice e come rilevare il percorso assoluto e uri assoluto.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Nell&rsquo;evento click del pulsante, scriviamo il codice che ci permette di visualizzare tutto il percorso del sito,<span style="">&nbsp; </span>il percorso assoluto e cambiare il collegamento ipertestuale.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Per rilevare tutto il percorso del collegamento ipertestuale, dobbiamo utilizzare la propriet&agrave; AbsoluteUri, mentre il percorso assoluto, ossia solo la parte che va dopo il dominio (es </font></span><a href="http://www.nomesito.it/sottosito"><span style="color: rgb(0, 0, 0);"><font face="Calibri">www.nomesito.it/sottosito</font></span></a><span style="color: rgb(0, 0, 0);"><font face="Calibri"><span style="">&nbsp; </span>ossia dopo il punto .it, nel nostro esempio sar&agrave;<span style="">&nbsp; </span>sottosito), tramite la propriet&agrave; absolutepath. Mentre per cambiare il collegamento del sito, utilizzare la parola chiave new Uri per la propriet&agrave; navigate Uri.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Riportiamo qui di seguito l&rsquo;esempio di codice per il linguaggio Visual Basic Net e C#</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><o:p><span style="color: rgb(0, 0, 0);"><font face="Calibri">&nbsp;</font></span></o:p></p>
<h4><b style=""><span lang="EN-US" style=""><font face="Calibri">Codice VB.Net</font></span></b></h4>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><b style=""><span lang="EN-US" style=""><font face="Calibri"><o:p></o:p></font></span></b></p>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"></p>
<o:p></o:p>
<p></p>
<div class="code"><font face="Calibri">Private Sub HyperlinkButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim collegamento As HyperlinkButton = CType(sender, HyperlinkButton)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsoluteUri)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsolutePath)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'cambio il link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; collegamento.NavigateUri = New Uri(&quot;<a href="http://emanuelemattei.blogspot.com/">http://emanuelemattei.blogspot.com/</a>&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsoluteUri)<br />
&nbsp;&nbsp;&nbsp; End Sub<br />
</font></div>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"><o:p><font face="Calibri"><br />
&nbsp;</font></o:p></p>
<h4><b style=""><span lang="EN-US" style=""><font face="Calibri">Codice C#</font></span></b></h4>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><b style=""><span lang="EN-US" style=""><font face="Calibri"><o:p></o:p></font></span></b></p>
<p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><o:p></o:p></p>
<o:p></o:p>
<p></p>
<div class="code"><font face="Calibri">private void HyperlinkButton_Click(object sender, RoutedEventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HyperlinkButton collegamento = (HyperlinkButton)sender;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsoluteUri);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsolutePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //cambio il link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; collegamento.NavigateUri = new Uri(&quot;<a href="http://emanuelemattei.blogspot.com/">http://emanuelemattei.blogspot.com/</a>&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(collegamento.NavigateUri.AbsoluteUri);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</font></div>
<h4>Conclusioni</h4>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">In questo articolo si &egrave; visto come utilizzare un controllo per la gestione dei collegamenti ipertestuali, come link e posta elettronica. Inoltre come tramite codice net possiamo impostare il collegamento ipertestuale. Ma l&rsquo;utilizzo di questo controllo pu&ograve; andare oltre a questo semplice esempio e scrivere applicazioni con una certa complessit&agrave; e funzionalit&agrave;.</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span style="color: rgb(0, 0, 0);"><font face="Calibri">Tramite la parola download si pu&ograve; scaricare il progetto utilizzato nell&rsquo;articolo.</font></span></p>
<br />
<a href="/contenutiupload/13/file/HyperlinkButtonSL.zip">Download</a>]]>
</description>
</item>
<item>
<title>Recensione libro: Beginning Asp.Net MVC 1.0</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_recensione-libro-beginning-aspnet-mvc-10_822.aspx</link>
<category>Recensioni</category>
<author>Emanuele Mattei</author>
<pubDate>05/10/2009 0.00.00</pubDate>
<description>
<![CDATA[
&nbsp; <strong>Scheda del libro:</strong>
<table width="30%" border="1" id="table1">
    <tbody>
        <tr>
            <td width="146">Autore:</td>
            <td>
            <div id="unitaschedadescrizione">Simone Chiaretta, Keyvan Nayyeri</div>
            </td>
        </tr>
        <tr>
            <td width="146">Prezzo:</td>
            <td>$ 49,99</td>
        </tr>
        <tr>
            <td width="146">Caratteristiche:</td>
            <td>
            <div id="unitaschedadescrizione">576 pagine</div>
            </td>
        </tr>
        <tr>
            <td width="146">ISBN:</td>
            <td>
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">
            <div id="unitaschedadescrizione">978-0-470-43399-7</div>
            </div>
            </div>
            </td>
        </tr>
        <tr>
            <td width="146">anno di edizione:</td>
            <td>08/2009&nbsp;</td>
        </tr>
        <tr>
            <td width="146">numero dell'edizione:</td>
            <td>1</td>
        </tr>
        <tr>
            <td width="146">Argomento:</td>
            <td>Informatica.</td>
        </tr>
        <tr>
            <td width="146">Lingua:</td>
            <td>Inglese</td>
        </tr>
        <tr>
            <td width="146">Editore:</td>
            <td>Wrox</td>
        </tr>
    </tbody>
</table>
<p style="text-align: justify;">Con l'uscita della versione di Visual Studio 2008 ed il Framework 3.5, sono state introdotte diverse novit&agrave;, tra esse anche nello sviluppo web con la tecnologia Asp.Net 3.5, in questo nuovo ambiente di sviluppo dopo qualche mese sono stati rilasciati nuovi modelli, per la creazione di particolare pagine web, chiamato appunto MVC. Il libro Beginning Asp.Net MVC 1.0 <a href="http://www.wrox.com/WileyCDA/WroxTitle/Beginning-ASP-NET-MVC-1-0.productCd-047043399X.html">http://www.wrox.com/WileyCDA/WroxTitle/Beginning-ASP-NET-MVC-1-0.productCd-047043399X.html</a> edito della casa editrice Wrox&nbsp; <a href="http://www.wrox.com/">http://www.wrox.com</a> fornisce le basi per utilizzare questo nuovo modo di scrivere applicazione web, un nuovo approccio per la presentazione e gestione dei dati.</p>
<p style="text-align: justify;">Il libro &egrave; scritto in lingua inglese ed il linguaggio di programmazione utilizzato in questo libro &egrave; C#.</p>
<p style="text-align: justify;">Il libro &egrave; composto da 19 capitoli e da due appendice, un libro composto da oltre 500 pagine al termine di ogni capitolo si trovano le esercitazioni per verificare il proprio livello di apprendimento.</p>
<p style="text-align: justify;">Nel libro non si trova nessun CD-Rom o Dvd, i sorgenti utilizzati nei vari capitoli si possono scaricare dal seguente sito&nbsp; <a href="http://www.wrox.com/WileyCDA/WroxTitle/Beginning-ASP-NET-MVC-1-0.productCd-047043399X,descCd-DOWNLOAD.html">http://www.wrox.com/WileyCDA/WroxTitle/Beginning-ASP-NET-MVC-1-0.productCd-047043399X,descCd-DOWNLOAD.html</a></p>
<div style="text-align: justify;">Il libro &egrave; scritto da due autori con alle spalle molti anni di esperienza di programmazione sulla tecnologia .Net ed in particolare Asp.Net.</div>
<p style="text-align: justify;">Simone Chiaretta &egrave; un Microsoft MVP&nbsp; ed &egrave; esperto sulla tecnologia Asp.Net, vive e lavora a Milano presso una societ&agrave; d'informatica, autore di diversi articoli, il suo blog in lingua italiana pu&ograve; essere consultato al seguente indirizzo seguente indirizzo <a href="http://blogs.ugidotnet.org/piyo/Default.aspx">http://blogs.ugidotnet.org/piyo/Default.aspx </a>mentre quello in lingua inglese da qui <a href="http://codeclimber.net.nz/">http://codeclimber.net.nz/</a> .</p>
<div style="text-align: justify;">Keyvan Nayyeri,&nbsp; &egrave; una persona esperta sullo sviluppo web, con la tecnologia Asp.Net, ha scritto numerosi articoli e libri. Il suo blog pu&ograve; essere consultato al seguente sito <a href="http://nayyeri.net/">http://nayyeri.net/ http://nayyeri.net/</a> .</div>
<p style="text-align: justify;">&nbsp;</p>
<div style="text-align: justify;">Ma vediamo in dettaglio i vari capitoli che fanno parte di questo libro.</div>
<p style="text-align: justify;">Come in ogni libro che si rispetti, il primo capitolo viene fornita una valida introduzione sul pattern MVC (Model View Controller), fornendo inizialmente e brevemente la storia di questo paradigma, per poi illustrarne l'architettura.&nbsp; Un capitolo pi&ugrave; corto degli altri ma che vuole fornire le basi su questo nouvo modo di sviluppare le applicazioni web.</p>
<p style="text-align: justify;">Con il secondo capitolo, si passa ad un confronto tra la programmazione web con Asp.Net e la programmazione web basata tramite il concetto di MVC. Nel capitolo sono fornite le differenze dell'uno e dell'altro modo di scrivere applicazioni. Dopo una valida spiegazione si passa ad esempi concreti, illustrando la creazione di una semplice applicazione Asp.Net MVC.</p>
<p style="text-align: justify;">Nel terzo capitolo, si passa finalmente alla pratica, mentre i primi due capitoli erano molto teorici, fornendo al lettore le basi di questo nuovo approccio, con il terzo capitolo vedremo esempi pratici, vedremo come iniziare a scrivere applicazioni Asp.Net 3.5 MVC. Dopo una breve introduzione sulla piattaforma VS 2008 ed i modelli messi a disposizione, sono illustrati i primi passi da compiere per creare le prime applicazioni. Le varie pagine e cartelle che crea l'ambiente di sviluppo Visual Studio 2008 nel progetto, i file di configurazione, ed altro ancora. In questo capitolo si trovano diverse immagini, per dare la possibilit&agrave; al lettore che si sta avvicinando per la prima volta di comprendere nel modo migliore i primi passi da svolgere.</p>
<p style="text-align: justify;">Nel quarto capitolo, viene illustrato il concetto di modello, nelle prime pagine viene fatta una buona introduzione di questo tema, successivamente si passa ad esempi pratici riguardante la gestione dei dati tramite il modello Linq to Sql. In queste pagine vengono forniti al lettore esempi pratici su questo nuovo modo di gestire i dati. Il capitolo si basa sulla gestione dei dati, dove nelle prime pagine troviamo una valida spiegazione, continuando a leggere il capitolo viene illustrando l'utilizzo di Ado.Net e le varie classi (sqlConnection, sqlcommand, ecc) per la gestione di un database Sql Server. Gli autori del libro cercano di fornire al lettore tutto le nozioni che c'&egrave; da sapere sulla gestione dei dati, continuando a leggere il capitolo si passa ad altre tecniche per la gestione dei dati, terminata la parte di Ado.Net, sono riportati numerosi esempi di codice ed immagini di utilizzo di Ado.Net Entity Framework. La parte conclusiva del capitolo &egrave; dedicata alla gestione dei file xml, come fonte dati.</p>
<p style="text-align: justify;">Nel quinto capitolo si passa al concetto del controller. Dopo una breve introduzione vedremo come creare il nostro primo controller, la definizione delle azioni, i vari attributi e l'oggetto ViewData. Gli autori, illustrano con esempi pratici questo tema, fin dalle prime pagine. Nel capitolo si trovano ottimi spunti e viene affrontato anche la gestione delle informazioni in cache.</p>
<p style="text-align: justify;">A questo punto, non resta che l'ultima parte di questo pattern, nel sesto capitolo, viene illustrato la parte riguardante il view, ossia la visualizzazione. Il capitolo inizia con una brevissima introduzione, per passare subito alla pratica. Viene illustrato al lettore come creare la sua prima pagina di tipo view, successivamente si passa alla parte del codice, illustrando anche la coesistenza con le master page, l'utilizzo del codice Javascript, ed altri interessante tecniche come quella della creazione di un'azione per la modifica. Il capitolo &egrave; molto ampio ed &egrave; corredato da numerosi esempi di codice che illustrano i vari scenari che si possono incontrare durante lo sviluppo software con questo nuovo approccio.</p>
<p style="text-align: justify;">Nel capitolo settimo, si passa al routing, la gestione dell'url. Dopo una brevissima introduzione in cui viene illustrato il concetto di routing, si passa ad esempi di codice. Nel capitolo sono illustrate esempi di codice sull'utilizzo delle propriet&agrave;, regular expression, messe a disposizione dalle classi per la gestione del routing. Nella parte conclusiva viene illustrata brevemente come effettuare il debuger route. effettuare In tutti questi capitoli, il lettore avr&agrave; compreso l'utilizzo e la padronanza della creazione di applicazioni web basandosi tramite il paradigma MVC.</p>
<p style="text-align: justify;">Nel capitolo ottavo, si passa alla parte riguardante i test, ed in particolare sono illustrate le tecniche riguardante unit testing. Nelle prime pagine viene illustrato in maniera adeguata il concetto di unit testing, successivamente alla spiegazione si passa alla scrittura di test tramite l'ambiente di sviluppo Visual Studio. Nel capitolo viene illustrato come utilizzare gli strumenti messi a disposizione da Visual Studio 2008.</p>
<p style="text-align: justify;">Nel capitolo nono, continua la parte dei test, argomenti e temi molto importanti. Nel capitolo viene illustrato al lettore come effettuare il test delle applicazioni Asp.Net MVC. Il capitolo inizia con la creazione di un progetto di test per Asp.Net MVC, e successivamente l'utilizzo di classi per effettuare i vari test. Continuando a leggere il capitolo, si passa allo spazio dei nomi System.Web.Abstractions, e le varie classi che si possono utilizzare per testare l'applicazione web. Un capitolo che illustra in maniera molto professionale tale argomento.</p>
<p style="text-align: justify;">Nel capitolo decimo si passa ai componenti.&nbsp; Nel capitolo &egrave; illustrato come utilizzare e creare dei componenti lato server&nbsp; nelle pagine Asp.Net MVC.&nbsp; Dopo una breve introduzione per far comprendere al lettore cosa sono ed a cosa servono i componenti server, si passa ad un controllo sever di tipo checkbox e l'associazione dei dati con un controllo gridView. Continuando si passa alla creazione personalizzata di una classe di tipo Html helper ed il suo utilizzo.</p>
<p style="text-align: justify;">Il capitolo 11, illustra il concetto di Action Filters. Il capitolo inizia subito con un esempio pratico riguardante la gestione dei messaggi di errore. Successivamente verranno illustrati numerosi esempi di codice, in cui illustrano la creazione di particolari metodi, i vari attributi da utilizzare, le varie classi messe a disposizioni e la gestione degli errori.</p>
<p style="text-align: justify;">Il capitolo 12, affronta un tema molto interessante per chi sviluppa applicazioni Asp.Net con la tecnologia Ajax. In questo capitolo viene illustrato l'utilizzo di Ajax in ambito di Asp.Net MVC. Nelle prime pagine viene fatta una valida introduzione sulla storia e funzionamento di Ajax e i vari impatti che si hanno con MVC. Viene spiegato brevemente anche jquery.&nbsp; Le prime pagine permettono al lettore di comprende il tema che si sta trattando. Al termine dell'introduzione si passa con un esempio pratico, aggiungendo nel progetto un riferimento Ajax.&nbsp; Gli esempi che sono illustrati sono molto semplici, proprio in questo modo fanno comprendere l'architettura di tutte queste tecnologie.&nbsp; Il capitolo a differenza degli altri &egrave; molto breve proprio perch&eacute; fornisce una breve introduzione.</p>
<p style="text-align: justify;">Con il capitolo 13, si passa al rilascio dell'applicazioni. Infatti ogni programmatore una volta terminato il lavoro, dovr&agrave; installare e configurare il sito che ha creato. In questo capitolo viene spiegato come effettuare il deploy, ossia il rilascio del proprio progetto web. Nelle prime pagine troviamo una buona introduzione e spiegazione delle varie situazioni che si verificano nel momento in cui andiamo a rilasciare su un altro pc o server il nostro sito web. Inoltre sono spiegati gli accorgimenti da prendere in fatto di sicurezza. Nella parte finale troviamo diverse linee guida di come pubblicare il nostro sito web, o tramite la pubblicazione di Visual Studio o tramite la creazione di un pacchetto di installazione web.</p>
<p style="text-align: justify;">Uno dei temi pi&ugrave; importanti dello sviluppo web &egrave; senz'altro la cache. Nel capitolo 14 viene illustrato l'utilizzo della gestione della cache in Asp.Net MVC. Nelle prime pagine viene fatta un'introduzione per poi passare ad un esempio pratico. Nel capitolo si trovano interessanti spunti su questo argomento.</p>
<p style="text-align: justify;">Con il capitolo quindicesimo si passa alle autorizzazioni e autenticazioni. Nelle prime pagine viene fatta una valida introduzione sia dal punto di autorizzazioni che autenticazione, i ruoli e le varie classi messe a disposizione dal framework. Terminata la parte introduttiva si passa a vari esempi di codice. Nei primi esempi viene illustrato la parte delle autorizzazioni e ruoli. Continuando si passa al tag relativo membershp e rolemanager, tutti tag del file di configurazione per la gestione delle autenticazioni. Continuando a leggere il capitolo, troviamo numerosi esempi di codice per autenticarsi al proprio sito.&nbsp; Un capitolo che copre ampiamente l'argomento sicurezza.</p>
<p style="text-align: justify;">Nel capitolo 16, l'argomento trattato &egrave; molto interessante ed avanzato. In questo capitolo viene illustrato come estendere Asp.Net MVC. Il lettore verr&agrave; guidato passo dopo passo alla personalizzazione e creazione di pagine che estendono Asp.Net MVC.&nbsp; Il capitolo &egrave; molto ampio, che prende in esame anche l'utilizzo di progetti open source, come Ninject e MvcContrib.</p>
<p style="text-align: justify;">Con il capitolo 17, gli autori, illustrano le tecniche e le attivit&agrave; da svolgere per migrare i propri siti scritti in Asp.Net in Asp.Net MVC.&nbsp; Nelle prime pagine viene illustrata in maniera approfondita i vari aspetti della migrazione, ed i vari scenari.&nbsp; Terminata la parte informativa si passa ad un semplice migrazione da una pagina Asp.Net in MVC i vari passi da seguire.</p>
<p style="text-align: justify;">Nel penultimo capitolo (18), viene illustrato un case study, vedremo come sviluppare un sito prendendo una situazione reale che potrebbe verificarsi. In questo caso, vedremo l'utilizzo oltre di Asp.net MVC, anche di Linq to SQL.&nbsp; La creazione di un blog per la casa editrice WROX, illustrando passo dopo la passo la creazione di un portale sfruttando tali tecnologie.</p>
<p style="text-align: justify;">Nell'ultimo capitolo, il diciannove, viene illustrato un altro case study, che anche in questo caso, oltre alla tecnologia Asp.Net MVC, troviamo l'utilizzo di altre tecnologie o servizi, in particolare in questo capitolo l'utilizzo del servizio web di Flickr, un progetto open source.&nbsp; In questo caso reale vedremo come creare un sito per la gestione delle immagini, la creazione di actions e views, nonch&egrave; l'utilizzo di Ajax e jQuery.</p>
<p style="text-align: justify;">Appendice A. Troviamo l'elenco dei siti riguardante le risorse, progetti utilizzanti nel libro oppure siti di grande interesse.ure siti di grande interesse.</p>
<p style="text-align: justify;">Appendice B. Si trovano le soluzioni degli esercizi che troviamo alla fine di ogni capitolo.</p>
<p>&nbsp;</p>
<p>Di seguito si riportano i vari capitoli che compongono questo manuale.</p>
<p>1)&nbsp; The Model-View-Controller Patternnbsp; The Model-View-Controller Pattern</p>
<p>2)&nbsp; Asp.Net WebForms Vs. Asp.Net MVC</p>
<p>3) Getting Started with Asp.Net MVC</p>
<p>4)&nbsp; The Model</p>
<p>5) The Controller</p>
<p>6) Thte View</p>
<p>7)&nbsp; Routing</p>
<p>8) Unit Testing Concepts</p>
<p>9) Testing Asp.Net MVC Applications</p>
<p>10) Components</p>
<p>11) Action Filters</p>
<p>12) Ajax</p>
<p>13) Deployment</p>
<p>14) Leveraging Asp.Net WebForm Features</p>
<p>15) Authentication and Authorization</p>
<p>16) Extending Asp.Net MVC</p>
<p>17) Migrating From Asp.Net WebForms</p>
<p>18) Case Study 1</p>
<p>19) Case Study 2</p>
<p>Appendice A) Resources</p>
<p>Appendice B) Exercise solutions</p>
<p><b>Conclusioni</b></p>
<p style="text-align: justify;">Il libro &egrave; molto adatto a chi si sta avvicinando alla programmazione Web con questo nuovo approccio. Un libro che fornisce le basi per muoversi in maniera autonoma sullo sviluppo di applicazioni web tramite MVC. Un libro molto utile per chi vuole iniziare a programmare applicazioni Asp.Net MVC. Anche se &egrave; scritto in lingua inglese, i vari capitoli sono scritti in modo molto semplice da permettere a chiunque di comprenedere l'argomento, inoltre i numerosi esempi di codice e le varie immagini, aiutano il lettore a comprendere l'argomento che si trattando. Per tanto &egrave; consigliato a coloro che conoscono la tecnologia Asp.Net ed il linguaggio di programmazione C# , visto che l'intero libro &egrave; scritto con questo linguaggio.</p>]]>
</description>
</item>
<item>
<title>I controlli di Silverlight 2   Il controllo Image</title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_i-controlli-di-silverlight-2---il-contro_753.aspx</link>
<category>Silverlight</category>
<author>Emanuele Mattei</author>
<pubDate>17/09/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri">Oggi vedremo il controllo per la gestione delle immagini o meglio per la visualizzazione delle immagini. </font><br />
<font face="Calibri">Il controllo image, permette di visualizzare un immagine nel nostro progetto silverlight.<br />
<br />
</font></p>
<h4>Creazione del progetto</h4>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Dopo aver creato un nuovo progetto Silverlight, trasciniamo dalla barra degli strumenti, il controllo image, nella parte di visualizzazione codice XAML.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">A questo punto, aggiungiamo al nostro progetto (tasto destro del mouse sul nome del progetto o soluzione, e selezioniamo la voce aggiungi elemento esistente, cercando l&rsquo;immagine di nostro interesse) un immagine da utilizzare nel controllo image.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Di seguito riportiamo il codice xaml</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Impostando la propriet&agrave; Stretch a none, l&rsquo;immagine viene visualizzata in base alle dimensioni effettive del file, mentre impostando il valore fill, l&rsquo;immagine viene visualizzata con le&nbsp;dimensioni in base all&rsquo;area del controllo image. </font></p>
<div class="code"><span lang="EN-US" style="line-height: 115%; font-family: 'Courier New'; font-size: 10pt;"><span lang="EN-US" style=""><o:p>&lt;Image x:Name=&quot;imgImmagine&quot; Source=&quot;CF.jpg&quot; Stretch=&quot;None&quot;&gt;&lt;/Image&gt;</o:p></span></span></div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">La propriet&agrave; Source, riguarda il percorso in cui si trova il file immagine da visualizzare.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Si fa presente, nella riga di codice precedente, che il file immagine (CF.jpg) si deve trovare nella stessa cartella in cui si trova il file xap,ossia nella cartella clientbin.</font><o:p><br />
<br />
</o:p></p>
<h4>Caricamento dinamico</h4>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Ora vediamo come caricare dinamicamente un immagine da codice, direttamente nel controllo image.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Supponendo che l&rsquo;immagine jpg si trovi nella stessa cartella del file xap, ossia in clientbin (creata di default dall&rsquo;ambiente visual studio) tramite le classi uri e bitmapimmage, impostiamo la propriet&agrave; source di tale controllo.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Qui di seguito si riporta il codice .net</font><o:p><font face="Calibri">&nbsp;</font></o:p><span lang="EN-US" style=""><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<strong><u>VB.Net</u></strong>
<div class="code">'oggetto che rileva l'immagine<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim linkImmage As New Uri(&quot;CF.jpg&quot;, UriKind.Relative)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'imposto la propriet&agrave; source, con un oggetto di tipo immagine che fa riferimento all'immagine <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imgImmagine.Source = New Media.Imaging.BitmapImage(linkImmage)</div>
<strong><u><br />
C# </u></strong>
<div class="code">//oggetto che rileva l'immagine<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uri linkImmage = new Uri(&quot;CF.jpg&quot;, UriKind.Relative);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposto la propriet&agrave; source, con un oggetto di tipo immagine che fa riferimento all'immagine <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imgImmagine.Source = new System.Windows.Media.Imaging.BitmapImage(linkImmage);</div>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">La Classe uri, accetta nel suo costruttore vari argomenti, nel nostro caso il nome del file, e il tipo di url, nel nostro caso relativo, ma ci sono altre opzioni come assoluto o indefinito.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Una volta ottenuto tale oggetto, si imposta la propriet&agrave; source, con un nuovo oggetto di tipo BitMapImage, nel cui costruttore accetta un oggetto di tipo uri, creato precedentente.</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><o:p><font face="Calibri">&nbsp;</font></o:p></p>
<h4>Conclusioni:</h4>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt; text-align: justify;"><font face="Calibri">Tramite la parola download potete scaricare il progetto utilizzato nell&rsquo;articolo, per entrambi i linguaggi di programmazione. Il controllo image &egrave; molto semplice da utilizzare.<br />
</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><font face="Calibri"> <br />
<a href="/contenutiupload/13/file/ImageSL.zip">Download</a></font></p>]]>
</description>
</item>
<item>
<title>C sharp  e OpenGL creazione di un diagramma 3D. </title>
<link>http://www.iprogrammatori.it/articoli/programmazione/art_c-sharp--e-opengl-creazione-di-un-diagra_816.aspx</link>
<category>.Net Framework</category>
<author>Guido Agostini</author>
<pubDate>16/09/2009 0.00.00</pubDate>
<description>
<![CDATA[
<h2>Introduzione</h2>
<div style="text-align: justify;">Nell'articolo precedente ho creato un nuovo controllo con l'ausilio delle librerie OpenGL CsGL, adesso cercher&ograve; di creare un controllo in qualche modo utile ad un programma ossia la visualizzazione di un diagramma in tre dimensioni al quale associare dei valori, precisamente dieci valori per rappresentare dei dati.</div>
<br />
<h4>Creazione della classe Cubo.</h4>
<div style="text-align: justify;">La classe cubo servir&agrave; alla rappresentazione di un valore del diagramma, il codice della classe &egrave; il seguente:</div>
<br />
<div class="code"><span style="color: rgb(0, 128, 128);">class Cubo<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float [,] obj_cube;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private bool sali;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int [,] poly_cube;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float r, g, b;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int valh;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int pvalh;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float posx;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float rotc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Cubo()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valh = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; posx = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotc = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pvalh = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_cube = new float[8, 3]{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { -3.00000f , 0.000000f , 3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3.00000f , 0.000000f , 3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3.00000f , 0.000000f , -3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { -3.00000f , 0.000000f , -3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { -3.00000f , 0.000000f , -3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3.00000f , 0.000000f , 3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3.00000f , 0.000000f , -3.00000f } ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { -3.00000f ,0.000000f , -3.00000f } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; poly_cube= new int[12,3]{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 0 , 1 , 2&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 0 , 2 , 3&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 0 , 4 , 5&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 0 , 5 , 1&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 1 , 5 , 6&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 1 , 6 , 2&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 2 , 6 , 7&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 2 , 7 , 3&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3 , 7 , 4&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 3 , 4 , 0&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 4 , 7 , 6&nbsp; }&nbsp; ,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 4 , 6 , 5&nbsp; }&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void inc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (valh &gt;60 &amp;&amp; sali)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sali = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (valh &lt; 0 &amp;&amp; !sali)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sali = true ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 4; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (sali)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_cube[x, 1] += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valh += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_cube[x, 1] -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valh -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void SetH(int nh)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valh = nh*2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pvalh = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void SetX(float nx)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; posx = nx;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Draw(float rot)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glMatrixMode(GL.GL_MODELVIEW);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glPushMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glTranslatef(posx,0.0f , 45.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotc += 1f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pvalh &lt; valh)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pvalh += 2;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 4; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_cube[x, 1] = pvalh;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glBegin(GL.GL_TRIANGLES);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 12; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int v1, v2, v3;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v1 = poly_cube[x, 0];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v2 = poly_cube[x, 1];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v3 = poly_cube[x, 2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glColor3f(.5f, .5f, .5f);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glColor3f(r, g, b);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glVertex3f(obj_cube[v1, 0], obj_cube[v1, 1], obj_cube[v1, 2]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glVertex3f(obj_cube[v2, 0], obj_cube[v2, 1], obj_cube[v2, 2]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glVertex3f(obj_cube[v3, 0], obj_cube[v3, 1], obj_cube[v3, 2]);<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glEnd();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glPopMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setcolor(float rn, float gn, float bn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = rn;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g = gn;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = bn;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int GetH()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.valh ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}</span></div>
<div style="text-align: justify;">la struttura obj_cube contiene i vertici del cubo mentre poly_cube contiene la definizione dei poligoni per il disegno dello stesso.<br />
La variabile valh contiene il valore dell'altezza del cubo, pvalh invece serve per effettuare l'animazione del cubo quando il diagramma viene disegnato e passa da un valore 0 ad arrivare a valh, la variabile posx contiene la posizione del cubo in x, rotc serve per la rotazione del cubo.<br />
La funzione inc serve per animare il diagramma facendo salire o scendere il valore dell'altezza in base a valh, la funzione setH invece serve per impostare l'altezza del cubo, SetX per impostare posx, Draw disegna il cubo con le primitive OpenGL e lo disegna in altezza in modo progressivo utilizzando pvalh.</div>
<br />
<h4>Creazione della classe diagramma.</h4>
<div style="text-align: justify;">Ora creer&ograve; la classe per gestire il diagramma che contiene all'interno dieci istanze della classe Cubo vista prima. Il codice della classe &egrave; il seguente:</div>
<div class="code">class Diagramma<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Cubo[] c;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float rot = 10.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int[] hd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool muovi;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Diagramma()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float px = -15.0f * 5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; muovi = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c = new Cubo[10];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hd = new int[10] { 15, 4, 10, 6, 3, 2, 5, 9, 11, 2 };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 10; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x] = new Cubo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].SetH(hd[x]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].SetX(px);<br />
&nbsp;&nbsp;&nbsp; px+=15.0f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //imposta i colori del diagramma con sfumatura di rosso<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetColor(1);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void SetColor(int col)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float r1 = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (col)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 10; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r1 = 0.05f * (float)(c[x].GetH()/10.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].setcolor(1.0f, r1, r1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].SetH(hd[x]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 10; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r1 = 0.05f * (float)(c[x].GetH() / 10.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].setcolor(r1,1.0f, r1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].SetH(hd[x]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 10; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r1 = 0.05f * (float)(c[x].GetH() / 10.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].setcolor(r1,r1, 1.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].SetH(hd[x]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Draw()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glMatrixMode(GL.GL_MODELVIEW);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glLoadIdentity();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glPushMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glTranslated(10.0f,0.0f,30.0f);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; GL.glRotatef(rot++, 0.0f, 1.0f, 0.0f);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 10; x++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int hp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (muovi)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetColor(1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].inc();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[x].Draw(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glPopMatrix();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</div>
<div style="text-align: justify;">&nbsp; <br />
nel costruttore della classe viene inizializzato il diagramma definendo l'array c che contiene dieci cubi o valori del diagramma ai quali vengono assegnati i valori contenuti nell'array hd e la posizione in x contenuta nella variabile px che viene ogni volta incrementata di 15 per distanziare i cubi del diagramma.<br />
La funzione SetColor definisce il colore del diagramma dove gli elementi vengono definiti con una sfumatura di colore rosso,verde o blu a seconda del valore che gli stessi rappresentano.<br />
Infine la funzione draw che disegna i cubi con la funzione della classe cubo Draw, la variabile booleana muovi serve per eseguire una animazione del diagramma.</div>
<br />
<h4>Utilizzo della clase diagramma.</h4>
A questo puto non ci resta che inserire una istanza della classe diagramma all'interno della classe c3d del nostro controllo:<br />
<br />
private Diagramma dia;<br />
<br />
Ed inserire il codice di disegno della funzione glDraw :<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 5:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL.glColor3f(r, g, b);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dia.Draw();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
<br />
<h4>Utilizzo del controllo diagramma.</h4>
<div style="text-align: justify;">Non ci resta che utilizzare il diagramma in una applicazione Windows form.<br />
Prima di tutto creiamo la nostra applicazione, secondo inseriamo il rifrimento al nostro controllo (.dll) e assegnamo il valore 5 tramite la funzione del controllo: userControl11.Set(5); dove UserControl11 &egrave; il nome dell'istanza del controllo.<br />
Comparir&agrave; a questo punto il diagramma a 3 dimensioni, in modo tale da visualizzare una piccola animazione dei cubi fino al raggiungimento del valore effettivo rappresentato.<br />
Nell'esempio che riporto alla fine dell'articolo vi &egrave; anche una finestra di configurazione del controllo che serve a cambiare la sfumatura del colore al diagramma e ad abilitare e a disabilitare l'animazione del diagramma.</div>
<br />
<h4>Conclusioni.</h4>
Il controllo creato  &egrave; soltanto un esempio, naturalmente per fare un controllo utile ad una applicazione si dovrebbe dare la possibilit&agrave; di personalizzare u