Foros del Web » Programando para Internet » ASPX (.net) »

DataGrid a Excel. Error

Estas en el tema de DataGrid a Excel. Error en el foro de ASPX (.net) en Foros del Web. Buenas a todos de nuevo, tengo el siguiente codigo que cogie de otro hilo y que lo intento emplear para pasar de un datagrid a ...
  #1 (permalink)  
Antiguo 22/06/2010, 13:35
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años
Puntos: 8
DataGrid a Excel. Error

Buenas a todos de nuevo,

tengo el siguiente codigo que cogie de otro hilo y que lo intento emplear para pasar de un datagrid a Excel.

Código:
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());

Response.End();
El codigo se ejecuta cuando pulsas un boton y el problema es que me tira este error en la linea GridView1.RenderControl(htmlWrite);

El control 'GridView1' de tipo 'GridView' debe colocarse dentro de una etiqueta de formulario con runat=server.

Como no controlo mucho la parte de .aspx sino que lo mio es C# y poco, me podrïas ayudar??

El código del botón y del datagidview en .aspx es:

Código HTML:
 <asp:Button ID="Button3" runat="server" onclick="Button3_Click" 
            Text="Exportar a Excel" 

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="Fecha" DataFormatString="{0:yy-MM-dd/ hh:mm.ss}" 
                    HeaderText="Fecha" SortExpression="Fecha" />
                <asp:BoundField DataField="Presion" HeaderText="Presion" 
                    SortExpression="Presion" />
</Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:cnxIbercoBoyas %>" 
            
            SelectCommand="SELECT [Fecha], [Presion], [Temperatura], [Conductividad], [Salinidad], [SatuOxigeno], [Oxigeno], [pH], [PotencialReductor], [Clorofila], [Turbidez], [Radiacion], [Transmitancia] FROM [MedicionSeparadaFiltrada] ORDER BY [Fecha]">
        </asp:SqlDataSource>

Muchísimas gracias de antemano!!
  #2 (permalink)  
Antiguo 23/06/2010, 06:13
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: DataGrid a Excel. Error

Lo que te dice es que coloques las etiquetas form en tu aspx

<form id="form1" runat="server">
<asp:Button ID="Button3" runat="server" onclick="Button3_Click"
Text="Exportar a Excel"

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Fecha" DataFormatString="{0:yy-MM-dd/ hh:mm.ss}"
HeaderText="Fecha" SortExpression="Fecha" />
<asp:BoundField DataField="Presion" HeaderText="Presion"
SortExpression="Presion" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:cnxIbercoBoyas %>"

SelectCommand="SELECT [Fecha], [Presion], [Temperatura], [Conductividad], [Salinidad], [SatuOxigeno], [Oxigeno], [pH], [PotencialReductor], [Clorofila], [Turbidez], [Radiacion], [Transmitancia] FROM [MedicionSeparadaFiltrada] ORDER BY [Fecha]">
</asp:SqlDataSource>

</form>
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #3 (permalink)  
Antiguo 29/06/2010, 03:53
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años
Puntos: 8
Respuesta: DataGrid a Excel. Error

Gracias por la respuesta Marcelo, pero tanto el form, como el boton como el datagrid tienen la etiqueta runat="server", lo chequee y sigue saliendo el mismo error.

Te pongo abajo el código .aspx de la página completo por si así encuentras alguna otra cosa.

Saludos y muchas gracias de antemano!!

Código:
<body>
    <form id="form1" runat="server">
     <div id="contenedor_ad">
            <div id="cabecera_ad">
    
            <h1> Datos de los sensores </h1>
            
            </div>
        
            <div id="cuerpo_ad">
            
                <div class="text_4">
    
                  <div class="text_1">
                        
                    <div id="texto_ad">
                        Fecha de inicio:
                        <asp:TextBox ID="tbFechaInicio" runat="server" CssClass="label_fechainicio_ad"></asp:TextBox>
                        <br />
                        Fecha de fin:
                        <asp:TextBox ID="tbFechaFin" runat="server" CssClass="label_fechafin_ad"></asp:TextBox>
                        <br />
    
                        <br />
                        <asp:Button ID="Button2" runat="server" Text="Aplicar filtro" 
                            onclick="Button2_Click" CssClass="boton" />
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <asp:Button ID="Button3" runat="server" onclick="Button3_Click" 
                            Text="Exportar a Excel" CssClass="boton" />
                        <br />
                        <br />
                    </div>
                  </div>
                    
                 
                    
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                        DataSourceID="SqlDataSource1" CssClass="centrado_tabla_ad" >
                        <HeaderStyle BackColor="#88aaff" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
                        <AlternatingRowStyle BackColor="White" />
                        <Columns>
                            <asp:BoundField DataField="Fecha" DataFormatString="{0:yy-MM-dd/ hh:mm.ss}" 
                                HeaderText="Fecha" SortExpression="Fecha" />
                            <asp:BoundField DataField="Presion" HeaderText="Presion" 
                                SortExpression="Presion" />
                            <asp:BoundField DataField="Temperatura" HeaderText="Temperatura" 
                                SortExpression="Temperatura" />
                            <asp:BoundField DataField="Conductividad" HeaderText="Conductividad" 
                                SortExpression="Conductividad" />
                            <asp:BoundField DataField="Salinidad" HeaderText="Salinidad" 
                                SortExpression="Salinidad" />
                            <asp:BoundField DataField="SatuOxigeno" HeaderText="SatuOxigeno" 
                                SortExpression="SatuOxigeno" />
                            <asp:BoundField DataField="Oxigeno" HeaderText="Oxigeno" 
                                SortExpression="Oxigeno" />
                            <asp:BoundField DataField="pH" HeaderText="pH" SortExpression="pH" />
                            <asp:BoundField DataField="PotencialReductor" HeaderText="PotencialReductor" 
                                SortExpression="PotencialReductor" />
                            <asp:BoundField DataField="Clorofila" HeaderText="Clorofila" 
                                SortExpression="Clorofila" />
                            <asp:BoundField DataField="Radiacion" HeaderText="Radiacion" 
                                SortExpression="Radiacion" />
                            <asp:BoundField DataField="Transmitancia" HeaderText="Transmitancia" 
                                SortExpression="Transmitancia" />
                            <asp:BoundField DataField="Turbidez" HeaderText="Turbidez" 
                                SortExpression="Turbidez" />
                        </Columns>
            
                    </asp:GridView>
                    
                    
                    
                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                            ConnectionString="<%$ ConnectionStrings:cnxIbercoBoyas %>" 
            
                            SelectCommand="SELECT [Fecha], [Presion], [Temperatura], [Conductividad], [Salinidad], [SatuOxigeno], [Oxigeno], [pH], [PotencialReductor], [Clorofila], [Turbidez], [Radiacion], [Transmitancia] FROM [MedicionSeparadaFiltrada] ORDER BY [Fecha]">
                     </asp:SqlDataSource>
                    
                </div>
            </div>
            
            <div id="pie_ad">
        
                <img alt="" src="http://www.forosdelweb.com/Imagenes/pie.jpg" />
            </div>
    
    </div>
    </form>
</body>
  #4 (permalink)  
Antiguo 29/06/2010, 05:55
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: DataGrid a Excel. Error

Mira este ejemplo que a mi me funciona perfectamente y hay algunos cambios con respecto al tuyo ok.
Suerte y saludos.


Dim sb As New StringBuilder()
Dim sw As New StringWriter(sb)
Dim htw As New HtmlTextWriter(sw)
Dim Page As New Page()
Dim form As New HtmlForm()



Page.EnableEventValidation = False
Page.DesignerInitialize()
Page.Controls.Add(form)
form.Controls.Add(GridView1)
Page.RenderControl(htw)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=FileName.xls")
Response.Charset = "UTF-8"
Response.ContentEncoding = Encoding.Default
Response.Write(sb.ToString())
Response.End()
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #5 (permalink)  
Antiguo 29/06/2010, 08:34
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años
Puntos: 8
Respuesta: DataGrid a Excel. Error

Buenas de nuevo,

he usado lo que pones en la web, y ahora la excepción es: La propiedad 'EnableEventValidation' sólo puede establecerse en la directiva de páginas o en la sección de configuración <pages>.

Te comento una cosa porque mi fallo puede estar por ahí. Esto programando con Visual Studio 2008, por lo que el código que me pasaste lo empleo en el fichero .aspx.cs. Mientras que el código que pegué anteriormete es el del fichero .aspx

¿Es posible que tenga que añadir el código que mandaste en el .aspx?

Muchas gracias de corazón.
Saludos.
  #6 (permalink)  
Antiguo 29/06/2010, 08:40
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: DataGrid a Excel. Error

Comentale esa linea a ver que tal...... y fijate que esto esta en vb y no en c# ok

Dim sb As New StringBuilder()
Dim sw As New StringWriter(sb)
Dim htw As New HtmlTextWriter(sw)
Dim Page As New Page()
Dim form As New HtmlForm()



'Page.EnableEventValidation = False
Page.DesignerInitialize()
Page.Controls.Add(form)
form.Controls.Add(GridView1)
Page.RenderControl(htw)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=FileName.xls")
Response.Charset = "UTF-8"
Response.ContentEncoding = Encoding.Default
Response.Write(sb.ToString())
Response.End()
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #7 (permalink)  
Antiguo 02/07/2010, 10:09
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años
Puntos: 8
Respuesta: DataGrid a Excel. Error

Buenas! Agradecerte de nuevo tu ayuda, eso lo primero!
Comentarte que he avanzado pero seguía teniendo algunos problemas. Tras seguir buscando encontré este código que funcionó a la primera. Supongo que los problemas estarían por ser Visual y no C#.

Pero lo dicho, muchísimas gracias!

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);

Page page = new Page();
HtmlForm form = new HtmlForm();

GridView1.EnableViewState = false;

// Deshabilitar la validación de eventos, sólo asp.net 2
page.EnableEventValidation = false;

// Realiza las inicializaciones de la instancia de la clase Page que requieran los diseñadores RAD.
page.DesignerInitialize();

page.Controls.Add(form);
form.Controls.Add(GridView1);

page.RenderControl(htw);

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=data.xls");
Response.Charset = "UTF-8";
Response.ContentEncoding = Encoding.Default;
Response.Write(sb.ToString());
Response.End();
  #8 (permalink)  
Antiguo 02/07/2010, 10:10
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: DataGrid a Excel. Error

Me alegro y no hay drama.... siempre se da una mano cuando se puede.

Saludos y por aca andaremos. :)
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #9 (permalink)  
Antiguo 02/07/2010, 10:10
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años
Puntos: 8
Respuesta: DataGrid a Excel. Error

Estaba justo ojeandolo y he visto que es igual, salvo que page en C# es en minúscula, por lo que me faltaba cambiar eso y habría funcionado!!!

Conclusión: soy más que torpe!!

Gracias amigo
  #10 (permalink)  
Antiguo 02/07/2010, 10:12
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: DataGrid a Excel. Error

jejeje y bueno.... a veces pasa. Un abrazo.
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.

Etiquetas: datagrid, excel, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:06.