Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584

    esportare in excel, problema

    salve a tutti
    ho una funzione che mi espoerta in excel:
    codice:
       Response.Clear()
            Response.AddHeader("content-disposition", "attachment;    filename=FileName.xls")
            Response.Charset = ""
            Response.ContentType = "application/vnd.xls"
    
            Me.dgAllegati.DataSourceID = "ODAllegatiExcel" ' = Me.ODAllegati 'collego gli allegati
            Me.dgAllegati.DataBind()
    
            Dim stringWrite As New System.IO.StringWriter()
            Dim htmlWrite As New HtmlTextWriter(stringWrite)
    
            dgAllegati.RenderControl(htmlWrite)
            Response.Write(stringWrite.ToString())'da errore qui
    ho evidenziato dove da errore(ultima riga) dice:
    "Il controllo 'ctl00_MasterBody_dgAllegati' di tipo 'GridView' deve essere inserito in un tag Form con runat=server."

    ovviametne già il tag FORM risiede nella master page, cosa posso fare per corregere l'errore?
    stavo pensando di salvare su disco e poi dare in response..è un'alternativa?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    aggironamento
    ho cambiato nel seguente codice:
    codice:
            Dim frmMain As Web.UI.HtmlControls.HtmlForm = CType(Page.Master.FindControl("frmMain"), Web.UI.HtmlControls.HtmlForm)
            frmMain.Controls.Clear()
            frmMain.Controls.Add(dgAllegati)
            frmMain.RenderControl(htmlWrite) 'htwrite)
    
    
            '   dgAllegati.RenderControl(htmlWrite)
            Response.Write(stringWrite.ToString())
    in modo da referenziare il form del master, ma ora da errore ma diverso
    Immagini allegate Immagini allegate
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  3. #3
    in teoria quello che hai fatto sembrerebbe giusto, invece il motore asp.net si incazza di brutto.

    anche io ci ho sbattuto parecchio la testa

    alla fine invece di fare il render del gridview, creo un controllo htmlTable, lo riempo con le righe del gridview e poi faccio il write di quello, che non fa incazzare asp.net perché non ha bisogno del form runat server.

    una cosa simile a:
    codice:
    foreach(DataRow row in gridview.DataSource)
    {
       HtmlTableRow tRow = new HtmlTableRow();
    
       //faccio anche il for sulle celle
          HtmlTableCell tCella = new HtmlTableCell("td");
          //faccio i controlli dei tipi dati, stile, valori ecc...
          tRow.Cells.Add(tCella);
    
       myTabella.Rows.Add(tRow);
    }

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho avuto lo stesso problema qualche giorno fa. Mi pare di ricordare (ma proprio non ne sono sicuro) che il problema erano dei linkButton (quelli che servono per cambiare l'ordine delle tabelle). Togliendo tutto il superfluo, funzionava. mi dispiace di non ricordare di più.
    Pietro

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Il controllo 'ListView1_Sort_campi_id' di tipo 'LinkButton' deve essere inserito in un tag Form con runat=server

    Confermo.

    control.RenderControl(textWriter)


    va in errore se il controllo (in questo caso un ListView) ha la possibilità di essere ordinato :master:


    ps. l'esportazione in Excel in questo modo mi pare penosa. Ma non è meglio creare da soli il file Excel? (in formato xml intendo )
    Pietro

  6. #6
    si, qualsiasi controllo asp che si cerca di disegnare in un output excel, da errore.

    ecco perché io, come scritto sopra, genero una tabella htmlTable. Idem comunque per tutti gli altri controlli, quindi se ci sono appunto i nomi di colonna come linkButton, nella tabella HtmlTable vanno messi come semplice testo. Anche perché che senso ha mettere un link in un file excel?

    stesso risultato se si genere l'excel in XML piuttosto che in HTML. basta non usare controlli asp.net.

    ciao ciao

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Mah! se il mio obiettivo è trovare l'html prodotto da un controllo, senso o non senso, non ha senso che vada in errore
    Pietro

  8. #8
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da Gluck74
    si, qualsiasi controllo asp che si cerca di disegnare in un output excel, da errore.

    ecco perché io, come scritto sopra, genero una tabella htmlTable. Idem comunque per tutti gli altri controlli, quindi se ci sono appunto i nomi di colonna come linkButton, nella tabella HtmlTable vanno messi come semplice testo. Anche perché che senso ha mettere un link in un file excel?

    stesso risultato se si genere l'excel in XML piuttosto che in HTML. basta non usare controlli asp.net.

    ciao ciao
    grazie a tutti
    il capo ha scelto di farlo in una popup, ovviamente metto in preferiti questa discussione
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.