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
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;
public Boolean? Adulto
{
get { return _adulto; }
set { _adulto = value; }
}
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
https://www.iprogrammatori.it/articoli/programmazione/art_tutorial-datagrid-di-silverlight-parte-p_1105.aspx qui la parte seconda
https://www.iprogrammatori.it/articoli/programmazione/art_tutorial-controllo-datagrid-di-silverlig_1079.aspx e qui
https://www.iprogrammatori.it/articoli/programmazione/art_tutorial-datagrid-in-silverlight-tramite_1080.aspx la terza parte.