domenica 22 settembre 2019

.Net DatagridView con checkbox seleziona tutto tramite VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-datagridview-con-checkbox-selezionat_1635.aspx



In questo articolo vedremo come realizzare nelle nostre applicazioni di tipo “Windows Application” la possibilità di dotare il controllo DatagridView, un controllo Checkbox posizionato nell’intestazione che permette di selezionare e deselezionare le varie righe.
Inoltre tramite un pulsante andremo a visualizzare a video i record selezionati.
I vari esempi di codice sono tutti tramite i linguaggi di programmazione più usati del .Net, in particolare di Visual Basic Net e C#.
Dopo aver selezionato un progetto di tipo “Desktop” tramite il linguaggio di proprio interesse, inserire nella finestra, un controllo datagridview ed un pulsante, il tutto come mostrato in figura 1.
Il DatagridView, dovrà contenere una colonna di tipo “DataGridViewCheckBoxColumn”.


Figura 1 – La finestra di esempio

Stesura di codice

Ora dobbiamo scrivere il codice per implementare il controllo DatagridView con l’intestazione di tipo Checkbox e visualizzare a video i valori selezionati.
Passiamo in visualizzazione codice e scriviamo il codice per realizzare quanto detto.
Scriviamo la funzione che permette di selezionare e deselezionare le varie checkebox di ogni riga.
In questo modo quando si farà click sul controllo checkbox posto nell’intestazione verificherà se togliere o no la spunta.
Qui di seguito la funzione per entrambi i linguaggi.



VB.Net

Private Sub checkboxIntestazione_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)

        DtgDati.BeginEdit(True)

        Dim checkTutti As CheckBox = CType(sender, CheckBox)

        Dim selezionaSiNo As Boolean = checkTutti.Checked

        Dim righeSelezionate = (From row In DtgDati.Rows.OfType(Of DataGridViewRow)() Where row.Cells("Nome").Value IsNot Nothing AndAlso Not String.IsNullOrEmpty(row.Cells("Cognome").Value.ToString()) Select row).ToList()

 

        For Each Elemento In righeSelezionate

            Dim chk As DataGridViewCheckBoxCell = CType(Elemento.Cells(0), DataGridViewCheckBoxCell)

            chk.Value = selezionaSiNo

        Next

 

        DtgDati.EndEdit()

    End Sub

 

 

C#

   void checkboxIntestazione_CheckedChanged(object sender, EventArgs e)

        {

            DtgDati.BeginEdit(true);

            CheckBox checkTutti = (CheckBox)sender;

            bool selezionaSiNo = checkTutti.Checked;

 

            var righeSelezionate = (from row in DtgDati.Rows.OfType<DataGridViewRow>()

                                    where

                                          row.Cells["Nome"].Value != null && !string.IsNullOrEmpty(row.Cells["Cognome"].Value.ToString())

                                    select row).ToList();

 

            foreach (var Elemento in righeSelezionate)

            {

                DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)Elemento.Cells[0];

 

                chk.Value = selezionaSiNo;

 

            }

            DtgDati.EndEdit();

        }


Ora dobbiamo scrivere la funzione che permette di aggiungere all’intestazione del controllo Datagriview il controllo Checkbox e richiamare la funzione precedente, tramite l’evento di mettere o togliere la spunta.
Il codice di facile comprensione, riguarda la possibilità di creare un controllo checkbox, impostare le dimensioni ed il posizionamento.
Qui di seguito le suddette operazioni per entrambi i linguaggi di programmazione.


 

VB.Net

Private Sub VisualizzaCheckAll()

        Dim rect As Rectangle = DtgDati.GetCellDisplayRectangle(0, -1, True)

        rect.Y = 3

        rect.X = rect.X + (rect.Width / 2) - 7

        Dim checkboxIntestazione As CheckBox = New CheckBox()

        checkboxIntestazione.Name = "checkboxIntesazione"

        DtgDati(0, 0).ToolTipText = "Seleziona tutto."

        checkboxIntestazione.Size = New Size(18, 18)

        checkboxIntestazione.Location = rect.Location

        AddHandler checkboxIntestazione.CheckedChanged, AddressOf checkboxIntestazione_CheckedChanged

        DtgDati.Controls.Add(checkboxIntestazione)

    End Sub

 

C#

  private void VisualizzaCheckAll()

        {

            Rectangle rect = DtgDati.GetCellDisplayRectangle(0, -1, true);

            // Imposto la posizione

            rect.Y = 3;

            rect.X = rect.X + (rect.Width / 2) - 7;

            CheckBox checkboxIntestazione = new CheckBox();

            checkboxIntestazione.Name = "checkboxIntesazione";

            DtgDati[0, 0].ToolTipText = "Seleziona tutto.";

            checkboxIntestazione.Size = new Size(18, 18);

            checkboxIntestazione.Location = rect.Location;

            checkboxIntestazione.CheckedChanged += checkboxIntestazione_CheckedChanged;

          

            DtgDati.Controls.Add(checkboxIntestazione);

        }

Ora dobbiamo scrivere il codice per il caricamento dei dati nel controllo Datagridview
Qui di seguito il codice per creare delle righe con alcuni dati, in particolare saranno due colonne che rappresentano il nome e cognome.
Il codice si troverà nell’evento load della form, in modo che appena si avvia verranno caricati.



VB.Net

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try

            VisualizzaCheckAll()

            Dim Dati As DataTable = New DataTable()

            Dim ColonnaNome As DataColumn = New DataColumn("Nome")

            Dim ColonnaCognome As DataColumn = New DataColumn("Cognome")

            Dati.Columns.Add(ColonnaNome)

            Dati.Columns.Add(ColonnaCognome)

            Dim riga As DataRow = Dati.NewRow()

            riga("Nome") = "Emanuele"

            riga("Cognome") = "Mattei"

            Dati.Rows.Add(riga)

            riga = Dati.NewRow()

            riga("Nome") = "Luigi"

            riga("Cognome") = "Cristaldi"

            Dati.Rows.Add(riga)

            DtgDati.DataSource = Dati

        Catch ex As Exception

            MessageBox.Show("Errore: " & ex.Message)

        End Try

    End Sub

 

 

C#

private void Form1_Load(object sender, EventArgs e)

        {

 

            try

            {

 

                VisualizzaCheckAll();

                DataTable Dati = new DataTable();

                DataColumn ColonnaNome = new DataColumn("Nome");

                DataColumn ColonnaCognome = new DataColumn("Cognome");

                Dati.Columns.Add(ColonnaNome);

                Dati.Columns.Add(ColonnaCognome);

 

                DataRow riga = Dati.NewRow();

                riga["Nome"] = "Emanuele";

                riga["Cognome"] = "Mattei";

                Dati.Rows.Add(riga);

 

                  riga = Dati.NewRow();

                riga["Nome"] = "Luigi";

                riga["Cognome"] = "Cristaldi";

                Dati.Rows.Add(riga);

                DtgDati.DataSource = Dati;

 

 

 

 

 

            }

            catch (Exception ex)

            {

                MessageBox.Show("Errore: " + ex.Message);

            }

        }




Ora siamo giunti quasi alla conclusione del nostro articolo, dovremmo scrivere il codice per visualizzare a video i record selezionati, in particolare nell’evento click del pulsante, rilevare i record che hanno la spunta nella casella combinata.
Qui di seguito il frammento di codice per entrambi i linguaggi.



VB.Net

Private Sub BtnRileva_Click(sender As Object, e As EventArgs) Handles BtnRileva.Click

        Try

            Dim righeSelezionate = (From row In DtgDati.Rows.OfType(Of DataGridViewRow)() Where row.Cells(0).Value IsNot Nothing AndAlso CBool(row.Cells(0).Value) <> False And row.Cells("Nome").Value IsNot Nothing AndAlso Not String.IsNullOrEmpty(row.Cells("Cognome").Value.ToString()) Select row).ToList()

 

            For Each elementoTrovato In righeSelezionate

                MessageBox.Show("Nome: " & elementoTrovato.Cells("Nome").Value & " Cognome: " + elementoTrovato.Cells("Cognome").Value)

            Next

 

        Catch ex As Exception

            MessageBox.Show("Errore: " & ex.Message)

        End Try

    End Sub

 

C#

  private void BtnRileva_Click(object sender, EventArgs e)

        {

            try

            {

 

 

                var righeSelezionate = (from row in DtgDati.Rows.OfType<DataGridViewRow>()

                                    where row.Cells[0].Value != null && (bool)row.Cells[0].Value != false &

                                          row.Cells["Nome"].Value != null && !string.IsNullOrEmpty(row.Cells["Cognome"].Value.ToString())

                                    select row).ToList();

 

 

                foreach (var elementoTrovato in righeSelezionate)

                {

                    MessageBox.Show("Nome: " + elementoTrovato.Cells["Nome"].Value + " Cognome: " + elementoTrovato.Cells["Cognome"].Value);

                }

 

 

            }

            catch (Exception ex)

            {

                MessageBox.Show("Errore: " + ex.Message);

            }

        }






Conclusioni

In questo articolo si è visto come estendere il controllo DatagridView di progetti per Windows, per la gestione dei dati in maniera più amichevole.
L’inserimento del controllo checkbox nell’intestazione per permettere la selezione e deseleziona dei record diventa per l’utente una miglior gestione dei dati ma soprattutto utilizzando meglio l’applicativo. Il controllo DatagridView offre moltissimo al programma e tanta flessibilità permettendo in maniera semplice di estendere tale controllo.

venerdì 20 settembre 2019

Entity Framework connection strings con username e password per il database Mdf

Qui di seguito si riporta la connectionstrings utilizzando utente e password, per accedere ad un database Mdf tramite Entity Framework.

<connectionStrings>

<add name="DatiEntities" connectionString="metadata=res://*/ModelDati.csdl|res://*/ModelDati.ssdl|res://*/ModelDati.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\Dati.mdf;User Id=NomeUtente;Password=MiaPassword;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

</connectionStrings>

giovedì 19 settembre 2019

Ebook gratuito Visual Studio 2019

Visual Studio 2019 Succinctly

Un piccolo ed introduttivo ebook, ossia un libro elettronico per avvicinare il lettore ad alcune interessanti funzionalità dell'ambiente di sviluppo "Visual Studio 2019".
L'ebook è scritto dall'italiano Alessandro Del Sole, che per anni ha fornito alle community interessanti articoli.
L'ebook in lingua inglese e nel formato "pdf" può essere scaricato gratuitamente previo registrazione o account, dal seguente sito https://www.syncfusion.com/ebooks/visual-studio-2019-succinctly

mercoledì 18 settembre 2019

Tessera sanitaria attivarla come carta nazionale dei servizi e firma digitale

In questo mini articolo vedremo come rendere la tessera sanitaria utile anche per i servizi legati alla Carta Nazionale dei Servizi, CNS.
La Tessera Sanitaria, quella blu, può essere utilizzata anche per accedere ai servizi della PA, tramite un lettore di smart card.
Vediamo come attivarla.
L'attivazione avviene tramite la regione di residenza, qui https://sistemats1.sanita.finanze.it/portale/modalita-di-accesso-con-ts_cns  alcuni riferimenti regionali.

Per la regione Lazio, ci si può recuperare alle ASL ed Ospedali che sono abilitati per questa attività.
Gli indirizzi si trovano al seguente sito http://cns.regione.lazio.it/punti-di-attivazione
Per attivarla, occorre recarsi con un documento e con la tessera sanitaria nel posto che si ritiene utile.
Giunti, si compila un modulo oppure stamparlo da qui qui http://cns.regione.lazio.it/documents/283605/319835/Attivazione+TS-CNS.pdf/b73cb90f-9c0d-4fee-a486-6051e63ce5f7 .
Ma potete compilarlo anche li.
Vi verranno forniti la prima parte dei dati, PIN, PUK ed un codice, mentre tramite email, vi verrà inviata la seconda parte dei dati.
Il pin è considerato come la password.
Ora, dopo aver ricevuto i dati, occorre installare sul pc i driver per accedere alla Smart Card.
Dal seguente sito https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso è possibile scaricare il driver in riferimento alla scade e sistema operativo.
Per la scheda sanitaria, in alto a sinistra, si trova un codice, di norma è AC20.....
Con quella sigla, andate a vedere nella colonna Sigla della pagina del driver, a questo punto selezionate il sistema operativo di vostro interessa e scaricare il file compresso.
Una volta scaricato, lo dovete decomprimere ed installare.
Terminata l'installazione dei driver, non vi resta che testare la carta nazionale dei servizi.
Vi consiglio di andare sul sito per la gestione della spesa sanitaria, qui https://sistemats1.sanita.finanze.it/portale/ ed andare nella sezione cittadini e poi fare click sulla voce "Accedi con TS-CNS" e poi fare prima click su "Registra" e poi su "Login".
Dopo aver fatto click sulla voce "Login" ci verrà chiesto di inserire il codice PIN, mettendo tutte le 8 cifre (primo e secondo foglio) che abbiamo ricevuto durante l'attivazione.
A questo punto si entrerà nella pagina personale delle spese sanitarie.

Qui di seguito alcuni riferimenti internet:

Sito Regine Lazio per informazioni sulla CNS http://cns.regione.lazio.it/
Elenco driver (visto in precedenza) https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso

Elenco per Regioni https://sistemats1.sanita.finanze.it/portale/modalita-di-accesso-con-ts_cns

Manuale come attivare la CNS alla tessera sanitaria della Regione Lazio http://cns.regione.lazio.it/come-attivare-la-carta