Il controllo datagrid di Silverlight 2.0

Un semplice utilizzo del controllo datagrid di Silverlight 2.0 tramite il linguaggio Visual Basic Net e C#.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione

In Silverlight si ha un controllo griglia, molto simile al controllo Datagrid dell’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à al programmatore di rappresentare in modo molto bene i dati.
L’articolo fornisce le basi del suo utilizzo, sia per il linguaggio di programmazione VB.Net che per il linguaggio C#

Stesura del codice.

Dopo aver creato un progetto di tipo Silverlight, inserite nel progetto un controllo datagrid, il file xaml dovrà essere simile a questo illustrato qui di seguito.

<data:DataGrid Name="dtgDati" AlternatingRowBackground="Azure"  AutoGenerateColumns="True" >
</data:DataGrid>

Vediamo in dettaglio le varie proprietà impostate.
Name, imposta  il nome univoco al controllo, la proprietà alternatingRowBackground, il colore di sfondo della riga, ma quella alternata, mentre la proprietà autogenerateColumns, impostata a true, fa si che le colonne vengono generate automaticamente.

Stesura del codice .Net

Passiamo in visualizzare codice. Il caricamento dei dati, avviene tramite una lista di una classe, nella quale si hanno due proprietà (nome e cognome) un modo molto semplice per visualizzare dei dati.
Qui di seguito si riporta la classe che avrà due proprietà di tipo string, visualizzando nella griglia il nome e d il cognome.

VB.Net


Public Class Nominativo
        Dim m_nome As String
        Dim m_cognome As String
        Sub New(ByVal nome As String, ByVal cognome As String)
            m_nome = nome
            m_cognome = cognome
        End Sub
        Public Property Nome() As String
            Get
                Return m_nome
            End Get
            Set(ByVal value As String)
                m_nome = value
            End Set
        End Property
        Public Property Cognome() As String
            Get
                Return m_cognome
            End Get
            Set(ByVal value As String)
                m_cognome = value
            End Set
        End Property
    End Class

C#

 public class Nominativo
        {
            string m_nome;
            public string Nome
            {
                get { return m_nome; }
                set { m_nome = value; }
            }
            string m_cognome;
            public string Cognome
            {
                get { return m_cognome; }
                set { m_cognome = value; }
            }
            public Nominativo(string nome, string cognome)
            {
                this.m_nome = nome;
                this.m_cognome = cognome;
            }
        }


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à ItemsSource del datagrid con l’oggetto lista creato. Qui di seguito si riporta il listato di tali operazioni

VB.Net

Private Sub CaricaDati()
        Dim Nominativi As New List(Of Nominativo)
        Nominativi.Add(New Nominativo("Emanuele", "Mattei"))
        Nominativi.Add(New Nominativo("Pinos", "Maffei"))
        dtgDati.ItemsSource = Nominativi
    End Sub

C#


  private void CaricaDati()
        {
            List nominativi = new List();
            nominativi.Add(new Nominativo("Emanuele", "Mattei"));
            nominativi.Add(new Nominativo("Pinos", "Maffei"));
            dtgDati.ItemsSource = nominativi;
        }

Ora non ci resta che avviare il progetto per vedere il caricamento della griglia con i dati impostati.

Conclusioni.


L’articolo ha fornito delle semplici basi sull’utilizzo di questo controllo, proprio per avvicinare il lettore all’uso del datagrid che fornisce al programmatore molta autonomia. 
Per la gestione dei dati, possiamo utilizzare una fonte dati come un file xml e linq, oppure un servizio (WCF).