122 messaggi dal 15 gennaio 2008
Daniele Bochicchio ha scritto:
prova a metterlo su false ed a fare l'override di OnInit, agganciando poi in maniera esplicita gli eventi di Page. così dovresti poter intecettare con sicurezza al 100% il PreRender.


Ti chiedo scusa in anticipo, è appena un mesetto che mi sono sto affacciando ad asp.net e solo nei rutagli di tempo, sto cercando di imparare "sul campo"... ho bisogno di fari qlc domanda che sicuramente esula da questo topic:
- cosa significa "fare l'override"?
- OnInit intendi della Page?
- cosa significa "agganciare in maniera esplicita gli eventi Page"?
- il prerender del gridview lo intercetto, tant'è che le colonne riesco a nasconderle, è la funzione di esportazione che non riesco a lanciare....

Chiedo scusa, so che sto facendo domande probabilmente basilari...
Modificato da Yield il 15 febbraio 2008 12.41 -
yield wrote:
- cosa significa "fare l'override"?

che con ASP.NET devi conoscere i principi dell'Object Oriented Programming: http://www.aspitalia.com/articoli/asp.net2/Object-Oriented-Programming.aspx http://www.aspitalia.com/articoli/asp.net2/Object-Oriented-Programming-2.aspx
- OnInit intendi della Page?

sì, scrivo di Page, intendo di Page

- cosa significa "agganciare in maniera esplicita gli eventi Page"?

significa conoscere la programmazione Object Oriented.

- il prerender del gridview lo intercetto, tant'è che le colonne riesco a nasconderle, è la funzione di esportazione che non riesco a lanciare....

perchè questa devi intercetterla a livello di Page_Render.

Chiedo scusa, so che sto facendo domande probabilmente basilari...

nessun problema, con quei due articoli che ti ho segnalato dovresti imparare quanto meno cosa signficano

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
122 messaggi dal 15 gennaio 2008
sai che giusto questo weekend vado a farmi prestare il libro da cui sono stati tratti gli articoli che mi hai segnalato?

speriamo mi sia di aiuto per chiarirmi alcuni concetti base!

intanto grazie per l'interessamento, mi farò risentire (no, non è una miaccia!  )
122 messaggi dal 15 gennaio 2008
torno alla carica con una nuova domanda:

la funzione di esportazione estrae i dati visualizzati nella gridview "al momento", cioè se uso la paginazione mi esporta solo i dati della pagina corrente. Io avrei invece bisogno di esportare la totalità dei dati della gridview!
E' un limite della gridview e devo quindi prendere una strada completamente diversa?

Riflettendoci più che esportare i dati della gridview, dovrei esportare i dati risultanti dal datasource (AccessDataSource nel mo caso). Consigli?

Grazie
152 messaggi dal 18 gennaio 2002
Io, specie se il gridview è complesso, rieseguo la query e popolo il file xls con un loop.

Di seguito un esempio commentato

Sub esporta_xls()


Dim sb As New System.Text.StringBuilder()
Dim output As String = String.Empty
Dim fileName As String = "elenco_cedenti.xls"

sb.Append("<table>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Dovuto</td><td>Dovuto cliente</td><td>Scadenza</td><td>Cliente</td><td>Descrizione</td><td>Periodo</td><td>Sospeso</td><td>Estromesso</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
' Se per popolare la gridview ho utilizzato filterexpression, al posto della clausola WHERE posso utilizzare "SELECT ...." & miofiltro & "order by..." dove miofiltro
'Dim miofiltro As String = ""
'If Me.AccessDataSource1.FilterExpression <> "" Then miofiltro = "WHERE " & Me.AccessDataSource1.FilterExpression


' imposto la query ad esempio copiandola dall'accesDataSource
Dim miasql As String = "SELECT Dovuto.IDdovuto, Dovuto.Scadenza, Dovuto.ImportoDovuto, Dovuto.Descrizione, Dovuto.DataInizio, Dovuto.DataFine, Dovuto.Pagato, Dovuto.DataPagamento, Dovuto.NumeroFattura, Dovuto.DataFattura, Dovuto.idCedente, AgentiCedente.idAgente, Cedenti.Cedente, Cedenti.SospensioneAmministrativa, Cedenti.Estromessi, AgentiCedente.Percentuale * Dovuto.ImportoDovuto / 120 AS DovutoAgente, AgentiCedente.Percentuale, Dovuto.PrAgente FROM ((Dovuto INNER JOIN Cedenti ON Dovuto.idCedente = Cedenti.IDcedente) INNER JOIN AgentiCedente ON Dovuto.idCedente = AgentiCedente.idCedente) WHERE (AgentiCedente.idAgente = ?) AND (Dovuto.Pagato = 0) AND (Dovuto.PrAgente = - 1) AND (Dovuto.Scadenza BETWEEN AgentiCedente.DataInizioCedente AND AgentiCedente.DataFineCedente) ORDER BY Dovuto.Scadenza DESC;"

' ...ma potrei impostare l'sql anche in questo modo
'miasql = Me.AccessDataSource1.SelectCommand


' definisco e imposto eventuali parametri della query
Dim miocomando As New OleDbCommand(miasql, miaconn)
miocomando.Parameters.Add(New System.Data.OleDb.OleDbParameter("idAgente", System.Data.OleDb.OleDbType.Integer, 0, "idAgente"))

Try
miocomando.Parameters("idAgente").Value = CInt(Me.Label1.Text)
miaconn.Open()
Dim miodatareader As OleDbDataReader
miodatareader = miocomando.ExecuteReader
Do While miodatareader.Read
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>" & Format(miodatareader("DovutoAgente"), "c") & "</td>" & "<td>" & Format(miodatareader("ImportoDovuto"), "c") & "</td>" & "<td>" & miodatareader("Scadenza") & "</td>" & "<td>" & miodatareader("Cedente") & "</td>" & "<td>" & miodatareader("Descrizione") & "</td>" & "<td>" & miodatareader("DataInizio") & " - " & miodatareader("DataFine") & "</td>" & "<td>" & scrivisi(miodatareader("SospensioneAmministrativa")) & "</td>" & "<td>" & scrivisi(miodatareader("Estromessi")) & "</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)

Loop
miodatareader.Close()
miaconn.Close()
sb.Append("</table>" & vbCrLf)
output = sb.ToString()
'Response.Charset = ""
Response.ContentEncoding = System.Text.Encoding.GetEncoding(0)
'Prepara e invia la risposta HTTP
Response.ContentType = "application/vnd.ms-excel"
Response.AppendHeader("Content-Disposition", "attachment; filename=" & fileName)
Response.Write(output)
Response.End()
Me.tip.Text = ". "

Catch exc As Exception
Me.tip.Text = "Esportazione non riuscita!!!" & exc.Message & "-" & exc.Source & "-" & exc.StackTrace
miaconn.Close()

End Try
End Sub

Ciao, Mirko.
Modificato da mrub il 03 maggio 2008 18.59 -
122 messaggi dal 15 gennaio 2008
bene perfetto!

ho tradotto il tutto in C#, per adesso senza usare filtri ne mettere la riga di intestazione, e funziona alla grande!

solo una cosa: nel file xls creato non viene visualizzata la classica griglia di excel... capita solo a me?

grazie :)
152 messaggi dal 18 gennaio 2002
per il momento ho risolto in questo modo:

se il cliente non dice niente
non me ne frega prorio niente.

cmq. l'unica cosa che posso aggiungere che non è un problema di formato celle, piuttosto di visualizzazione della griglia. (in excel: strumenti->opzioni->visualizza->griglia)
122 messaggi dal 15 gennaio 2008
quindi è una cosa normale... quello che non capisco è che di default in excel la griglia è visualizzata... boh....

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.