Errore esportazione grid view in excel

venerdì 31 ottobre 2008 - 23.42

squilibrio Profilo | Expert

Errore server nell'applicazione '/app'.
--------------------------------------------------------------------------------

Il controllo 'ctl00_Main_gwElenco' di tipo 'GridView' deve essere inserito in un tag Form con runat=server.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.Web.HttpException: Il controllo 'ctl00_Main_gwElenco' di tipo 'GridView' deve essere inserito in un tag Form con runat=server.

Errore nel codice sorgente:


Riga 75:
Riga 76: this.ClearControls(gwElenco);
Riga 77: gwElenco.RenderControl(oHtmlTextWriter);
Riga 78:
Riga 79: Response.Write(oStringWriter.ToString());


File di origine: c:\Users\Administrator\Documents\Visual Studio 2005\WebSites\app\ReportFineGiornataRange.aspx.cs Riga: 77








public void btnExcel_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
//Ricerca data
string DaMese = String.Format("{0:00}", tbRicercaDataDa.Date.Month);
string AMese = String.Format("{0:00}", tbRicercaDataA.Date.AddDays(1).Month);
string DaGiorno = String.Format("{0:00}", tbRicercaDataDa.Date.Day);
string AGiorno = String.Format("{0:00}", tbRicercaDataA.Date.AddDays(1).Day);

string Da = tbRicercaDataDa.Date.Year.ToString() + DaMese.ToString() + DaGiorno.ToString();
string A = tbRicercaDataA.Date.Year.ToString() + AMese.ToString() + AGiorno.ToString();

//export to excel
dbm = dbConnection.OpenDB();
dbm.DatabaseDisconnesso = tblSpedizioni;
string qrySelect = ....
dbm.CaricaTabella(tblSpedizioni.webreportgiornaliero, qrySelect, true);
gwElenco.DataSource = tblSpedizioni.webreportgiornaliero.DataSet.Tables[0].DefaultView;
gwElenco.DataBind();

Response.Clear();
Response.Buffer= true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false;

System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

this.ClearControls(gwElenco);
gwElenco.RenderControl(oHtmlTextWriter);

Response.Write(oStringWriter.ToString());

Response.End();


}


private void ClearControls(Control control)
{
for (int i=control.Controls.Count -1; i>=0; i--)
{
ClearControls(control.Controls[i]);
}

if (!(control is TableCell))
{
if (control.GetType().GetProperty("SelectedItem") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
try
{
literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
}
catch

{

}

control.Parent.Controls.Remove(control);
}

else

if (control.GetType().GetProperty("Text") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
control.Parent.Controls.Remove(control);
}
}
return;
}







<asp:GridView ID="gwElenco" runat="server" AutoGenerateColumns="False" DataKeyNames="awb" EnableViewState="False" Width="90%" AllowSorting="false">
<Columns>
<asp:BoundField DataField="DataSpedizione" Visible="true" HeaderText="DataSpedizione">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="awb" Visible="true" HeaderText="awb">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="destRagioneSociale" Visible="true" HeaderText="destRagioneSociale">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="destIndirizzo" Visible="true" HeaderText="destIndirizzo">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="destCAP" Visible="true" HeaderText="destCAP">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
</Columns>
<RowStyle Height="20px" />
<HeaderStyle BackColor="Silver" Height="20px" />
<AlternatingRowStyle BackColor="#E0E0E0" />
</asp:GridView>

rossimarko Profilo | Guru

Ciao,

verifica che la form html abbia l'attributo runat="server", altrimenti non potrai inserire al suo interno dei controlli
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

lviverit Profilo | Newbie


Aggiungere questo alla pagina.

public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
{
//Do nothing
}

Luciano

iif Profilo | Expert

Ciao, scusate se mi intrometto, ho aggiunto il codice ma ritorna l'errore "thread interrotto"
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5