Creazione tabella da datagridview

venerdì 11 dicembre 2009 - 20.40

gianbe Profilo | Newbie

Salve avrei bisogno di creare dinamicamente una tabella da una datagridview da esportare successivamente in pdf con itexsharp.

Ho il seguente codice che mi crea una tabella di 2 colonne per 2 righe.

Dim aTable As Table = New Table(2, 2)
' 2 rows, 2 columns
aTable.AddCell("0.0")
aTable.AddCell("0.1")
aTable.AddCell("1.0")
aTable.AddCell("1.1")

doc.Add(aTable)
doc.Close()

Vorrei modificarlo per creare la tabella dinamicamente in base a una datagridview.
Qualcuno può darmi una mano?

Teech Profilo | Expert

Non capisco questo modo di creare una tabella, ma logicamente prova così:
Public Sub NomeSub(ByVal grid As DataGridView) Dim aTable As Table = New Table(grid.Rows.Count, grid.Columns.Count) For col As Integer=0 to grid.Columns.Count-1 For row As Integer=0 To grid.Rows.Count-1 aTable.AddCell(col.ToString & "." & row.ToString) Next Next End Sub
P.S.: L'ho scritto al volo, controlla che le variabili per righe e colonne siano assegnate correttamente.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

gianbe Profilo | Newbie

Sicuramente non sono stato chiaro io.
La mia intenzione è quella di popolare la tabella, da esportare in pdf, con i dati presenti nella datagridview e quindi dovrei sostituire

aTable.AddCell(col.ToString & "." & row.ToString)

con...

aTable.AddCell(campo1 & "." & campo2 & "." & campo3................ )

...ma non riesco a farlo

Grazie

Teech Profilo | Expert

Non riesco proprio a capire cosa vuoi fare...
Dato un DataGridView vuoi popolare una "tabella", però:
- La Classe Table mi pare sia un controllo Web mentre la Classe DataGridView è un controllo Windows.Forms
- I parametri passati al costruttore di Table non sono corretti per il WebControl quindi credo si tratti di una classe "personalizzata".

Questo oggetto Table, da che Namespace è tratto? e fondamentalmente a cosa serve (reposotory temporaneo)?
Chiarito ciò posso provare ad aiutarti...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

gianbe Profilo | Newbie

Ti spiego brevemente cosa voglio fare.
Ho una form dove al clic su un botton viene caricata una datagridview e successivamente cliccando su "esporta in pdf" deve crearmi la tabella in pdf.



302x305 18Kb


L'oggetto Table lo prendo dalla libreria ITEXT per la creazione di PDF
GRAZIE

Teech Profilo | Expert

Guarda questo tutorial: http://itextsharp.sourceforge.net/tutorial/ch05.html
La classe Table di ItextSharp è una matrice di celle dimensionata sul costruttore.
Per popolarla bisogna assegnare le celle in sequenza riga per riga. Correggendo l'esempio di cui sopra puoi fare come segue:

Public Sub NomeSub(ByVal grid As DataGridView) Dim aTable As Table = New Table(grid.Rows.Count, grid.Columns.Count) For row As Integer=0 to grid.Rows.Count-1 For col As Integer=0 To grid.Cloumns.Count-1 aTable.AddCell(grid.Rows(row).Cells(col).Value.ToString) Next Next End Sub
Attento ai Casting dei valori delle celle...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

gianbe Profilo | Newbie

Ho provato il tuo codice ma mi segnala il seguente errore sulla riga
aTable.AddCell(DataGridView1.Rows(row).Cells(col).Value.ToString):

Riferimento a un oggetto non impostato su un'istanza di oggetto.

Dopo innumerevoli ricerche mi sono convinto che al momento non esiste nessuna classe che faccia al caso mio, per quanto riguarda vb.net mentre ce ne sono diverse in php (da dove provengo come programmatore).
Ti ringrazio comunque per la tua disponibilità.
Grazie
Gianni
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5