20 messaggi dal 11 giugno 2012
Salve a tutti, mi trovo alle prese con un problema che riguarda una gridview.
Ho creato questa gridview all'interno di una pagina e un bottone per esportare i dati che compaiono in un file excel.
Se vado a visualizzare la pagina tutto ok, ma quando premo il bottone mi da errore dicendomi: "Il controllo 'MainContent_GridView1' di tipo 'GridView' deve essere inserito in un tag Form con runat=server.".
Se lo includo in un form con runat=server mi da errore perché mi dice che in una pagina può esserci un solo form con runat=server (la pagina ha una masterpage con la form in questione).
Come posso sbloccare la situazione?
Allego il codice per maggiore chiarezza!
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SchedaMovimenti.aspx.cs" Inherits="WebApplication1.Azioni.SchedaMovimenti" Title="Movimenti Azioni" MasterPageFile="~/Site.Master" %>

<script runat="server">
    protected void ScaricaExcel_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=MovimentiAzioni.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.xls";

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

        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        htmlWrite.WriteLine("<strong><font size='4'> Movimento Azioni al "+ DateTime.Today +"</font></strong>");

        GridView1.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }
</script>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>MOVIMENTI AZIONI</h2>
    <div id="contenuto" runat="server">
        <p></p>
        
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="data" HeaderText="Data" SortExpression="data">
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                    </asp:BoundField>
                    <asp:BoundField DataField="da_socio" HeaderText="Socio Venditore" 
                        SortExpression="da_socio">
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="a_socio" HeaderText="Socio Compratore" 
                        SortExpression="a_socio">
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="num_azioni" HeaderText="Numero Azioni" 
                        SortExpression="num_azioni">
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                    <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:IntranetConnectionString %>" 
                SelectCommand="SELECT [data], [da_socio], [a_socio], [num_azioni] FROM [Movimenti_Azioni] ORDER BY [data], [da_socio], [a_socio]">
            </asp:SqlDataSource>
            <p></p>
            <asp:Button ID="ScaricaExcel" runat="server" Text="Scarica Excel" OnClick="ScaricaExcel_Click" />
        
    </div>
    <div id="permessi" runat="server">
        <asp:Label ID="Label1" runat="server" Font-Bold="True" style="color: #FF0000; text-align:center;">Non hai i permessi necessari per accedere alla pagina!</asp:Label>
    </div>
</asp:Content>
M1c0 wrote:
Come posso sbloccare la situazione?

facendo in modo che il tag form contenga il content. in parole povere, nella master page devi assicurarti che il contentplacholder sia nella form, così lo sarà anche il contenuto della pagina.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
20 messaggi dal 11 giugno 2012
Intanto grazie della risposta!
Ho visto che sulla master page il content è contenuto all'interno del tag form:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication1.SiteMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form runat="server">
        <div class="page">
            <div class="header">
                <div class="title">
                    <h1>
                        
                    </h1>
                </div>
                <div class="loginDisplay">
                    <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                        <AnonymousTemplate>
                            [ <a href="Login.aspx" ID="HeadLoginStatus" runat="server">Accedi</a> ]
                        </AnonymousTemplate>
                        <LoggedInTemplate>
                            Pagina iniziale - <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                            [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Disconnessione" LogoutPageUrl="~/"/> ]
                        </LoggedInTemplate>
                    </asp:LoginView>
                </div>
                <div class="clear hideSkiplink">
                    <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                        <Items>
                            <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home page"/>
                            <asp:MenuItem NavigateUrl="~/Utenti/Utenti.aspx" Text="Gestione Utenti" />
                            <asp:MenuItem NavigateUrl="~/Soci/Soci.aspx" Text="Gestione Soci" />
                            <asp:MenuItem NavigateUrl="~/Azioni/Azioni.aspx" Text="Compravendita Azioni" />
                            <asp:MenuItem NavigateUrl="~/Capitale/Capitale.aspx" Text="Aumento Capitale" />
                            <asp:MenuItem NavigateUrl="~/Anagrafica.aspx" Text="Anagrafica Banca" />
                        </Items>
                    </asp:Menu>
                </div>
            </div>
            <div class="main">
                <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
            </div>
            <div class="clear">
            </div>
        </div>
        <div class="footer">
        
        </div>
    </form>
</body>
</html>

Altre idee?
1 messaggio dal 28 febbraio 2006
ho il tuo identico problema!

Sei riuscito a risolvere in qualche modo?
forse manca questo?
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for the
//specified ASP.NET server control at run time.
}

Ormai programmano tutti... ma la professionalità appartiene a pochi
20 messaggi dal 11 giugno 2012
Purtroppo quel progetto l'ho modificato N volte e non mi ricordo come ma ho cambiato in qualche modo la funzionalità e ottenuto il risultato in qualche altro modo. Mi dispiace :/

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.