salve ragazzi ricevo quest'errore dopo aver popolato una gridview con i dati provenienti da database
è strano perchè dg che è l'ìid della g.view sta con runat=server
sto impazzendo ho provato mille soluzioni nn riesco a far funzionare l'esportazione dei dati con excell
ho xp con IIS 5

ERRORE:
\\\\\\\\\\\

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

Errore nel codice sorgente:


Riga 17: System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
Riga 18: this.ClearControls(dg);
Riga 19: dg.RenderControl(oHtmlTextWriter);
Riga 20: Response.Write(oStringWriter.ToString());
Riga 21: Response.End();

\\\\\\\\\\\


questo è il codice
mi aiutate per favore? sono giorni che c sbatto la testa
mi rimani solo di licenziarmi

<%@ Page language="C#" Debug="true" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
private void Button1_Click(object sender, System.EventArgs e)
{
//export to excel
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
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(dg);
dg.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
SqlConnection conn = new SqlConnection("data source=xxxx;initial catalog=xxxx;Integrated Security=True");
SqlCommand cmd = new SqlCommand("Select * from xxxx", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
dg.DataSource = ds.Tables[0];
dg.DataBind();
}
}
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("SelectedIte m").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").GetV alue(control,null);
control.Parent.Controls.Remove(control);
}
}
return;
}
</script>
<html runat="server">
<body runat="server" leftmargin="0" topmargin="0">

<form id="frm" runat="server">






<asp:GridView ID="dg" runat="server" AutoGenerateEditButton="True" AutoGenerateSelectButton="True" >
</asp:GridView>
<asp:Button id="Button1" runat="server" Text="Export to Excel"
OnClick="Button1_Click"></asp:Button>
</form>
</body>
</html>