21/04/12

Come creare una datagridview con una lista o un elenco di link che aprono allegati

A volte può nascere la necessità su un form VB.NET di avere un elenco di files allegati come dettaglio della scheda o del record corrente rappresentati sotto forma di elenco in una griglia.

imageA tal fine useremo un controllo datagridview nel quale caricheremo i nostri link con due campi da creare nella tabella allegati: uno col nome del file da visualizzare e l’altro col percorso fisico da lanciare.

 

Il codice per caricare le righe nella griglia (come mostrato in figura) mostrando celle linkabili ai file è il seguente:

‘questa definizione della colonna è obbligatoria prima di creare una nuova riga altrimenti si solleva un eccezione

DataGridViewAllegati.ColumnCount = 1

Dim riga As New DataGridViewRow()
Dim cella As New DataGridViewLinkCell

cella.Value = "Nome del file da visualizzare" (es. fattura 320)

cella.tag=”Percorso fisico del file” (es. c:\fattura320.doc)

        riga.Cells.Add(cell)

DataGridViewAllegati.Rows.Add(riga)

Questo blocco di codice possiamo metterlo ad esempio all’interno di un ciclo con un datareader che legge i record dalla tabella del database dove conserveremo il dettaglio allegati.

Esso va invocato per ogni allegato che vogliamo caricare come riga di collegamento nella nostra datagridview.

Naturalmente anche le dichiarazioni di riga e cella vanno nel ciclo.

In questo modo la griglia si caricherà con le righe linkabili come mostrato nella figura in alto dove abbiamo caricato a titolo di esempio tre volte la stessa riga.

Il codice per gestire l’apertura dei file cliccando sui link viene gestito sull’evento cellcontentclick della cella, ed è il seguente:

 

Private Sub DataGridViewAllegati_CellContentClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewAllegati.CellContentClick
        If e.ColumnIndex = 0 Then

            Try
                If My.Computer.FileSystem.FileExists(DataGridViewAllegati.Item(e.ColumnIndex, e.RowIndex).Tag.ToString) Then
                    Process.Start(DataGridViewAllegati.Item(e.ColumnIndex, e.RowIndex).Tag.ToString)
                Else
                    MsgBox("Il file è stato spostato o eliminato dalla posizione indicata.", vbCritical)
                End If

            Catch ex As Exception
                MsgBox("Il file è stato spostato o eliminato dalla posizione indicata o non è associato nessun programma per la sua apertura.", vbCritical)
            End Try

           
        End If

    End Sub

 

In questo modo, se il file sarà ancora disponibile e sul pc è presente un programma per aprire quel determinato tipo di files, si aprirà in un'altra finestra.

Per evitare che i files vengano cancellati, se ad esempio state sviluppando una gestione documentale con vb.net, vi consigliamo di creare su un server un percorso allegati nascosto, mappate il percorso nei settings ed ogni volta che l’utente aggiunge un allegato ve ne fate una copia in quel percorso, mappando naturalmente nel tag della griglia il percorso vostro. in tal modo oltre alla gestione documentale avrete implementato anche una gestione backup degli allegati con un colpo solo ... che ne pensate?

Nessun commento:

Posta un commento

Cosa ne pensi?