C# 将gridview导出为任何格式

C# 将gridview导出为任何格式,c#,export-to-excel,C#,Export To Excel,我正在尝试将gridview导出为excel/pdf/word格式 我已经添加了所有必要的实现,但它仍然给我一个错误,比如“gridview”类型的控件必须放在runat=server的表单标记中 请看下面我的代码 .aspx页 .ascx.cs控制 你可能和我有同样的问题 在母版页中,您已经有一个表单标签, 当您在webform中执行第二个表单标记时 尝试使用尽可能干净的母版页,例如: <%@ Master Language="C#" AutoEventWireup="true" Cod

我正在尝试将gridview导出为excel/pdf/word格式

我已经添加了所有必要的实现,但它仍然给我一个错误,比如“gridview”类型的控件必须放在runat=server的表单标记中

请看下面我的代码

.aspx页

.ascx.cs控制


你可能和我有同样的问题

在母版页中,您已经有一个表单标签, 当您在webform中执行第二个表单标记时

尝试使用尽可能干净的母版页,例如:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="TotalEmpty.master.cs" 

Inherits="ProjectName.MasterPages.TotalEmpty" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </div>
</body>
</html>

设计页面呢?你说的是.ascx页面吗?.aspx,因为你也使用了母版页。标记处可能存在任何冲突。请尝试在控件内仅使用一个表单标记。不在母版页或调用控件的网页中
  public override void VerifyRenderingInServerForm(Control control)
    {
        /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
           server control at run time. */
    }
 protected void btnExport_Click(object sender, EventArgs e)
    {
        if (ddlExport.SelectedIndex != 0)
        {
              if (ddlExport.SelectedValue == "Word")
            {
                Response.AddHeader("content-disposition", "attachment;filename=OtherCourses.doc");
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.ContentType = "application/vnd.word";

                StringWriter stringWrite = new StringWriter();
                HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
                List<InvoiceHelper> invoicelist = svc.RetriveInvoiceList(Request.Url);
                grdinvoicelist.AllowPaging = false;
                grdinvoicelist.DataSource = invoicelist;
                grdinvoicelist.DataBind();
                grdinvoicelist.RenderControl(htmlWrite);

                Response.Write(stringWrite.ToString());
                Response.End();
            }
        }
    }
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="TotalEmpty.master.cs" 

Inherits="ProjectName.MasterPages.TotalEmpty" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </div>
</body>
</html>