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
Vous devez vous connecter pour publier un commentaire.
Utiliser ce code pour télécharger des données à partir de
gridView
pour excel.OriginalL'auteur KanimozhiEthiraj
Un WebControl (ascx) ne doit pas contenir de
<body>
tag.Il produit un fragment HTML, et il doit être placé (à l'intérieur) d'une page HTML et à l'intérieur de la
asp:Form
élément.Vous avez 2 réponses ici, lisez attentivement et si votre situation est assez différent, post une Qustion.
OriginalL'auteur Henk Holterman
Suivre deux étapes
Étape 1
Étape 2
OriginalL'auteur GirishBabuC