Click here to Skip to main content
15,921,203 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,i have gridview as
ASP.NET
<asp:GridView ID="mygrid" runat="server" AllowPaging="True" AutoGenerateColumns="False"
        AutoGenerateDeleteButton="True" CssClass="GridStyle" DataKeyNames="ID">
        <%--<RowStyle BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px" ForeColor="Blue" Wrap="True" />--%>
        <Columns>
            <asp:TemplateField HeaderText="colname">
                <ItemTemplate>
                    <asp:Label ID="name" runat="server" CssClass="DisplayDesc" Text='<%# Bind("name") %>'
                        Visible="false"></asp:Label>
                    <asp:LinkButton ID="lnkname" runat="server" CausesValidation="false" CssClass="datalink"
                        PostBackUrl="#" Text='<%# Bind("name") %>'></asp:LinkButton>
                    <asp:Panel ID="Panel6" runat="server" CssClass="wrapText" Width="200px">
                        <cc1:hovermenuextender id="hvrname"  runat="server" popupcontrolid="pnlteamsite" popupposition="Left"
                            targetcontrolid="lnkname"></cc1:hovermenuextender>
                        <asp:Panel ID="pnlteamsite" runat="server" CssClass="balloonstyle" Style="display: none"
                            Width="200px">
                            <div>
                                <asp:Panel ID="pnlBody2" runat="server" Width="200px">
                                    <table cellpadding="0" cellspacing="2" width="100%">
                                        <tr>
                                            <td class="LableText">
                                                <%# Eval("name") %>
                                            </td>
                                        </tr>
                                    </table>
                                </asp:Panel>
                            </div>
                        </asp:Panel>
                    </asp:Panel>
                </ItemTemplate>
                <ControlStyle />
            </asp:TemplateField>
            <columns>
    </asp:GridView>

my code behide code for export as
private void CreateExcel(GridView GrdTemp)
      {
          Response.Clear();
          Response.Buffer = true;

          Response.AddHeader("content-disposition", "attachment;filename=AppList.xls");
          Response.Charset = "";
          Response.ContentType = "application/vnd.ms-excel";

          this.EnableViewState = false;
          StringWriter sw = new StringWriter();
          HtmlTextWriter hw = new HtmlTextWriter(sw);

          GrdTemp.AllowPaging = false;
          GrdTemp.AutoGenerateDeleteButton = false;
          GrdTemp.AutoGenerateEditButton = false;
          GrdTemp.DataBind();

          GrdTemp.RenderControl(hw);

          Response.Output.Write(sw.ToString());
          Response.Flush();
          Response.End();
      }

but I am not able to export ,i am getting error as
Extender control 'hvrname' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors().
Parameter name: extenderControl
in the line
GrdTemp.RenderControl(hw);
I had done rnd and added every possiblity as
override protected void OnInit(EventArgs e)
       {
           base.OnInit(e);
           if (this.DesignMode == true)
           {
               this.EnsureChildControls();
           }
           this.Page.RegisterRequiresControlState(this);
       }

and as
public override void VerifyRenderingInServerForm(Control control)
        {

        } 

and as EnableEventValidation="false" ,but still the same error .how to solve it. Please help.
Posted
Updated 22-Aug-12 18:18pm
v2

Did you register the control in the page directive? Have the proper entries for AJAX Control ToolKit been added to the web.config?

Register ajax control toolkit in your page
HTML
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="CC" %>


Or else remove and add the dll reference again. Also, have a look here for more info:
http://ajaxcontroltoolkit.codeplex.com/[^]
http://www.ajaxcontroltoolkit.com/[^]

..and for your error Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors().
refer similar threads:
Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors()[^] and
many more here[^]
 
Share this answer
 
v2
Here is the complete code to Export GridView to Excel:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient; 

public partial class ExportGridView : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GridView1.DataSource = BindData();
            GridView1.DataBind(); 
        }
    }

    

    private string ConnectionString
    {

        get { return @"Server=localhost;Database=Northwind;
        Trusted_Connection=true"; }

    }

    

    private DataSet BindData()
    {
        // make the query 
        string query = "SELECT * FROM Categories";
        SqlConnection myConnection = new SqlConnection(ConnectionString);
        SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
        DataSet ds = new DataSet();
        ad.Fill(ds, "Categories");
        return ds;

    }




    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Clear();

        Response.AddHeader("content-disposition", "attachment;
        filename=FileName.xls");

        Response.Charset = "";

        // If you want the option to open the Excel file without saving than

        // comment out the line below

        // 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();

    }

    public override void VerifyRenderingInServerForm(Control control)
    {

        // Confirms that an HtmlForm control is rendered for the
        specified ASP.NET server control at run time.

    }
}
 
Share this answer
 
Try a free Data export[^] tools. This one helps you to export your gridview to Excel easily.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900