If you want to export your ASPxGridView in UpdatePanel by using a DevExpress control, ASPxGrivViewExporter, you will need this trick.
In order to perform the export, use the following code template.
Default.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register Assembly="DevExpress.Web.v11.1, Version=11.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxMenu" TagPrefix="dx" %> <%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1.Export, Version=11.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView.Export" TagPrefix="dx" %> <%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %> <%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <dx:ASPxPopupMenu ID="ASPxPopupMenu1" runat="server" ClientInstanceName="popupMenu" OnItemClick="ASPxPopupMenu1_ItemClick"> <items> <dx:MenuItem Text="WriteXlsToResponse"> </dx:MenuItem> </items> </dx:ASPxPopupMenu> <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" ClientInstanceName="grid" DataSourceID="AccessDataSource1" EnableCallBacks="false" KeyFieldName="CategoryID"> <clientsideevents contextmenu="function(s, e) { popupMenu.ShowAtPos(ASPxClientUtils.GetEventX(e.htmlEvent), ASPxClientUtils.GetEventY(e.htmlEvent)); }" /> <columns> <dx:GridViewDataTextColumn FieldName="CategoryID" ReadOnly="True" VisibleIndex="0"> <EditFormSettings Visible="False" /> </dx:GridViewDataTextColumn> <dx:GridViewDataTextColumn FieldName="CategoryName" VisibleIndex="1"> </dx:GridViewDataTextColumn> <dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="2"> </dx:GridViewDataTextColumn> </columns> </dx:ASPxGridView> <dx:ASPxGridViewExporter ID="ASPxGridViewExporter1" runat="server" GridViewID="ASPxGridView1"> </dx:ASPxGridViewExporter> <dx:ASPxButton ID="ASPxButton1" runat="server" Text="WriteXlsToResponse PostBackTrigger" OnClick="ASPxButton1_Click"> </dx:ASPxButton> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/nwind.mdb" SelectCommand="SELECT [CategoryID], [CategoryName], [Description] FROM [Categories]"></asp:AccessDataSource> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="ASPxButton1" /> </Triggers> </asp:UpdatePanel> </asp:Content>
Default.aspx.cs
using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Init(object sender, EventArgs e) { DevExpress.Web.ASPxClasses.ASPxWebControl.RegisterBaseScript(Page);//ASPxClientUtils RegisterPostBackControl(); } private void RegisterPostBackControl() { ScriptManager sm = (ScriptManager)Page.Master.FindControl("ScriptManager1"); sm.RegisterPostBackControl(ASPxPopupMenu1); } protected void ASPxPopupMenu1_ItemClick(object source, DevExpress.Web.ASPxMenu.MenuItemEventArgs e) { ASPxGridViewExporter1.WriteXlsToResponse(); } protected void ASPxButton1_Click(object sender, EventArgs e) { ASPxGridViewExporter1.WriteXlsToResponse(); } }
MasterPage.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>
If you get “Object reference not set to an instance of an object” error on the line sm.RegisterPostBackControl(ASPxPopupMenu1);
, make sure you put your ScriptManager right below of form tag in your Root.master.
Thanks for the support. My problem is solved