17 messaggi dal 15 marzo 2007
Salve,
ho fatto un esportazione in xls della mia GridView.
Volevo sapere se era possibile eliminare delle colonne in esportazione.
Sotto riportato il codice che utilizzo per esportare:

Response.Clear()
Response.Buffer = True
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"

Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
GRDcodici.AllowPaging = False
GRDcodici.AllowSorting = False
GRDcodici.DataBind()
'Change the Header Row back to white color
GRDcodici.HeaderRow.Style.Add("background-color", "#FFFFFF")
'Apply style to Individual Cells
GRDcodici.HeaderRow.Cells(0).Style.Add("background-color", "green")
GRDcodici.HeaderRow.Cells(1).Style.Add("background-color", "green")
GRDcodici.HeaderRow.Cells(2).Style.Add("background-color", "green")
GRDcodici.HeaderRow.Cells(3).Style.Add("background-color", "green")
For i As Integer = 0 To GRDcodici.Rows.Count - 1
Dim row As GridViewRow = GRDcodici.Rows(i)
'Change Color back to white
row.BackColor = System.Drawing.Color.White
'Apply text style to each Row
row.Attributes.Add("class", "textmode")
'Apply style to Individual Cells of Alternating Row
If i Mod 2 <> 0 Then
row.Cells(0).Style.Add("background-color", "#C2D69B")
row.Cells(1).Style.Add("background-color", "#C2D69B")
row.Cells(2).Style.Add("background-color", "#C2D69B")
row.Cells(3).Style.Add("background-color", "#C2D69B")
End If
Next
GRDcodici.RenderControl(hw)
'style to format numbers to string
'Dim style As String = "<style>.textmode{mso-number-format:\@;}</style>"
'Response.Write(style)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.End()

Grazie in anticipo!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la soluzione più semplice è quella di nascondere le colonne che non ti interessano. In questo esempio nascondo la seconda colonna.
GRDcodici.Columns(1).Visible = False
Inserisci questa riga ovunque tu voglia, purché prima dell'istruzione RenderControl.
Tuttavia, la collezione Columns NON sarà accessibile se la tua GridView ha colonne autogenerate (cioè se ha AutoGenerateColumns="true").

In questo caso puoi, ovviamente, definire tu stesso le colonne ed evitare che vengano autogenerate.
In alternativa puoi agire a monte, cioè assegnare al DataSource della GridView una lista di oggetti diversi, che contengano solo le proprietà "interessanti". La proiezione di un oggetto in un'altro la puoi fare con LINQ e il suo extension method .Select. In fondo a questa pagina trovi un esempio.
http://msdn.microsoft.com/it-it/library/bb548891.aspx

ciao
Modificato da BrightSoul il 14 aprile 2012 10.26 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.