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.
A 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?