venerdì 13 gennaio 2012

Tutorial Datagrid Silverlight parte 4 VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_tutorial-silverlight-alla-scoperta-del-d_1134.aspx





Introduzione
Continua il nostro percorso alla scoperta del controllo Datagrid, di silverlight 4, illustrando questa volta, altre interessanti tecniche sulla creazione di particolare colonne per il controllo in questione.
Vedremo come creare una colonna, di tipo checkbox,.



Stesura del codice
Prendendo l’esempio del sorgente precedente, modifichiamo la classe persona, aggiungendo una proprietà di tipo boolean per gestire le informazioni per la colonna di tipo checkbox.
Come riportato qui di seguito:





VB.Net



Property Adulto As Boolean





C#



public Boolean Adulto



{



get { return _adulto; }



set { _adulto = value; }



}



Qui di seguito si riporta il codice completo della classe persona






VB.Net



Public Class Persona



Property Nome As String



Property Cognome As String





Property Data As Date





Property Adulto As Boolean





End Class





C#



public class persona



{



string _nome;



string _cognome;



DateTime _data;



Boolean _adulto;





public string Cognome



{



get { return _cognome; }



set { _cognome = value; }



}



public string Nome



{



get { return _nome; }



set { _nome = value; }



}



public DateTime Data



{



get {



return _data;



}



set { _data = value; }



}





public Boolean Adulto



{



get { return _adulto; }



set { _adulto = value; }



}





}





Ritorniamo in visualizzazione Design, modificando tramite l’editor di Visual studio 2010, il nostro controllo Datagrid, aggiungendo una nuova colonna di tipo “DataGridCheckboxColumn” ed impostando la proprietà Header a “Adulto”.
Ora, in visualizzazione codice di tipo XAML, nella riga aggiunta, per questa colonna, impostiamo l’attributo “Binding” al campo Adulto.
Qui di seguto si riporta il codice XAML.




<sdk:DataGridCheckBoxColumn Binding="{Binding Adulto}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Adulto" Width="Auto" />



Terminata la parte di progettazione del codice, dobbiamo, impostare in maniera adeguata la fonte dati.
Nel load della nostra pagina, impostiamo la proprietà Adulto, della classe Persona, con un valore true e poi successivamente false.
L’esempio riportato qui di seguito, riguarda un solo campo, ma possiamo utiizzare, anche gli altri campi come la data, nome e cognome, utlizzati negli articoli precedenti.
Si riporta il codice completo nella fase di caricamento della nostra form.



VB.Net



Private Sub LayoutRoot_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles LayoutRoot.Loaded



Dim listPersona As New List(Of Persona)



Dim per As New Persona



per.Adulto = True



listPersona.Add(per)



per = New Persona()



per.Adulto = False



listPersona.Add(per)



'carico i dati



dataGrid1.ItemsSource = listPersona



End Sub





C#



private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)



{



List<persona> listPersona = new List<persona>();



persona per = new persona();



per.Adulto = true;



listPersona.Add(per);



per = new persona();



per.Adulto = false;



listPersona.Add(per);



//carico i dati



dataGrid1.ItemsSource = listPersona;





}








Se viene eseguito il codice, Il tutto sarà come mostrato in figura 1.



Figura 1





Rilevamento valori
Vediamo come rilevare il valore della colonna.
Tramite la proprietà selectitem, ottieniamo la riga selezionata. Va ricordato, che nel caso si fa click sulla singola cella oppure non si seleziona nulla, il valore delle proprietà selectitem è null.
Nell’eventualità che si fa click all’interno della cella, possiamo utilizzare la proprietà currentcolum.
Qui di seguito si riporta il codice inserito nell’evento click di un pulsante, per rilevare il valore di una riga selezionata





VB.Net



Private Sub BtnValore_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles BtnValore.Click



If DataGrid1.SelectedItem Is Nothing Then Exit Sub



MessageBox.Show(CType(DataGrid1.SelectedItem, Persona).Adulto.ToString())



End Sub







C#



private void BtnValore_Click(object sender, RoutedEventArgs e)



{



if (dataGrid1.SelectedItem == null)



return;



MessageBox.Show(((persona)dataGrid1.SelectedItem).Adulto.ToString());



}












Ora vediamo altro aspetto della colonna, ossia la possibilità di impostare tre valori.
Se impostiamo nella parte XAML la proprietà “IsThreeState” a true, si ha la possibilità di avere tre modalità di stato, il tutto come mostrato in figura 2, quindi avremmo l'aspetto vuoto, il baffetto ed il trattino.
Naturalmente, la fonte dati, dev’essere a tre stati, nel nostro caso, il boolean, viene definito com nullable e quindi dichiarato come boolean?



Si riporta un esempio di codice XAML




IsThreeState="True"



Esempio della proprietà adulto



VB.Net



Property Adulto As Boolean?





C#



Boolean? _adulto;





Figura 2



Conclusioni
Siamo giunti alla conclusione dell’articolo, abbiamo visto come generare in maniera molto semplice e rapida una colonna di tipo boolean, applicando anche la possibilità di avere tre stati per una colonna di tipo checkbox.
Il controllo si presenta in maniera flessibile, lasciando al programmatore, molti spunti, per generare griglie accattivanti.



Qui trovate la parte 1 http://www.iprogrammatori.it/articoli/programmazione/art_tutorial-datagrid-di-silverlight-parte-p_1105.aspx qui la parte seconda http://www.iprogrammatori.it/articoli/programmazione/art_tutorial-controllo-datagrid-di-silverlig_1079.aspx e qui http://www.iprogrammatori.it/articoli/programmazione/art_tutorial-datagrid-in-silverlight-tramite_1080.aspx la terza parte.

Nessun commento: