La "GridView" doit être placé à l'intérieur d'une balise de formulaire avec runat=server.

Donc, j'ai fait des recherches de votre site et ma situation est unique. J'ai un contrôle du Web .ascx, il a un gridview et que le code ressemble à ceci:

<body>

    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true"
            OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="10">
            <Columns>
                <asp:BoundField DataField="fb_login" HeaderText="User Id" runat="server" />
                <asp:BoundField DataField="fb_url" HeaderText="URL___" />
                <asp:BoundField DataField="fb_response" HeaderText="Answer: Did you find what you were looking for?" />
                <asp:BoundField DataField="fb_noResponse" HeaderText="No Response or Ignore" />
                <asp:BoundField DataField="fb_date" HeaderText="Date" />
                <asp:BoundField DataField="fb_serviceCall" HeaderText="Prevented Service Call" />
                <asp:BoundField DataField="fb_partsShipment" HeaderText="Prevented Parts Shipment" />
                <asp:BoundField DataField="fb_warranty" HeaderText="Under Warranty" />
                <asp:BoundField DataField="fb_cancel" HeaderText="Cancelled" />
                <asp:BoundField DataField="fb_none" HeaderText="None of the Above" />
            </Columns>
        </asp:GridView>
        <asp:Button ID="download" Text=" Download to Excel " OnClick="dwnLoad" runat="server" />
    </div>

J'ai un téléchargement Excel bouton qui exécute le code suivant:

protected void dwnLoad(object sender, EventArgs e)
        {
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=kbNotification.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 htmlWriter = new HtmlTextWriter(stringWrite);
            GridView1.RenderControl(htmlWriter);
            Response.End();
        }

Lorsque j'appuie sur le bouton, je suis geting le message d'erreur suivant:

 Exception Details: System.Web.HttpException: Control 'pagecontent_0_GridView1' of type 'GridView' must be placed inside a form tag with runat=server.

Source Error: 


Line 54:             Response.Cache.SetCacheability(HttpCacheability.NoCache);
Line 55:             Response.ContentType = "application/vnd.xls";
Line 56:             System.IO.StringWriter stringWrite = new System.IO.StringWriter();
Line 57:             System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWrite);
Line 58:             GridView1.RenderControl(htmlWriter);


Source File: C:\Projects\MEAU\trunk\Code\MEAU.Web\Components\SupportCenter\KB_Notification_rpt.ascx.cs    Line: 56 

J'ai essayé d'ajouter la méthode suivante dans le code-behind:

public override void VerifyRenderingInServerForm(Control control)
        {
            return;
        }

cela ne fonctionne pas parce que c'est une .ascx page, donc j'ai également essayé de l'ajouter à mon défaut.page aspx... et je suis encore gettng erreurs qu'il ne peut pas trouver la méthode de overrid.

S'il vous plaît aider si vous pouvez repérer tout ce qui est incorrect, il serait très apprécié.
En ce qui concerne,

OriginalL'auteur Paul T. Rykiel | 2013-06-25