Hi,
My requirement is to generate PDF while clicking on image button in the grid.In the same page I have one search button(btnSearch). I have implemented OnNeedDataSource event.While clicking on search button I want to rebind the radgrid but I am getting this error “ErrorDetails : System.ArgumentException: Cannot unregister UpdatePanel with ID 'upnlPdf' since it was not registered with the ScriptManager. This might occur if the UpdatePanel was removed from the control tree and later added again, which is not supported. Parameter name: updatePanel at System.Web.UI.PageRequestManager.UnregisterUpdatePanel(UpdatePanel updatePanel) at System.Web.UI.ScriptManager.System.Web.UI.IScriptManagerInternal.UnregisterUpdatePanel(UpdatePanel updatePanel) at System.Web.UI.UpdatePanel.OnUnload(EventArgs e) at System.Web.UI.Control.UnloadRecursive(Boolean dispose) at System.Web.UI.Control.UnloadRecursive(Boolean dispose) at System.Web.UI.Control.UnloadRecursive(Boolean dispose) at System.Web.UI.Control.UnloadRecursive(Boolean dispose) at System.Web.UI.Control.RemovedControl(Control control) at System.Web.UI.ControlCollection.RemoveAt(Int32 index) at System.Web.UI.ControlCollection.Clear() at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) at System.Web.UI.WebControls.DataBoundControl.PerformSelect() at Telerik.Web.UI.GridTableView.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() at Telerik.Web.UI.GridTableView.DataBind() at Telerik.Web.UI.RadGrid.DataBind() at Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason) at Telerik.Web.UI.RadGrid.Rebind() at btnSearch_Click(Object sender, EventArgs e)”.
In aspx Page
===================================================================
<%@ Page Language="C#" MasterPageFile="~/ATMaster.Master" AutoEventWireup="true">
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel runat="server" ID="upnlSecurityDoc" UpdateMode="Conditional">
<ContentTemplate>
<telerik:RadGrid ID="RadGrid1" runat="server" Width="1050px" TabIndex="5" Height="350px"
AutoGenerateColumns="False" ForeColor="#333333" PageSize="10" AllowFilteringByColumn="false"
Skin="Outlook" AllowPaging="true" OnNeedDataSource=" RadGrid1_NeedDataSource"
BorderWidth="1px" BorderColor="#cccccc" OnItemCommand=" RadGrid1_ItemCommand"
>
<HeaderContextMenu EnableAutoScroll="True">
</HeaderContextMenu>
<GroupingSettings CaseSensitive="false" />
<MasterTableView PagerStyle-AlwaysVisible="true">
<CommandItemSettings ExportToPdfText="Export to Pdf" />
<Columns>
<telerik:GridTemplateColumn HeaderText="SlNo" AllowFiltering="false">
<HeaderStyle HorizontalAlign="Left" Font-Bold="true" Width="50px" />
<ItemStyle HorizontalAlign="Left" Width="50px"></ItemStyle>
<ItemTemplate>
<%# this.gvPendingOrder.CurrentPageIndex * this.gvPendingOrder.PageSize + Container.ItemIndex + 1%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="PDF">
<HeaderStyle Width="50px" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="upnlPdf">
<ContentTemplate>
<asp:ImageButton runat="server" ID="imgbtnPdf" AlternateText="Security Document Print"
CommandArgument='<%# Eval("OrderId") %>' ImageUrl="../Images/pdf_icon.gif" ImageAlign="Middle"
CommandName="Generate" ToolTip='<%# "Document" + Eval("OrderNo") + "." %>' />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="imgbtnPdf" /> </Triggers>
</asp:UpdatePanel>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true">
<Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="True">
</Scrolling>
</ClientSettings>
</telerik:RadGrid>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
In code behind
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
try
{
if (e.CommandName == "Generate")
{
string strOrderId = string.Empty;
strOrderId = e.CommandArgument.ToString();
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Reports/report1.rdlc");
localReport.EnableHyperlinks = true;
localReport.EnableExternalImages = true;
DataSet dataset1 = new DataSet();
DataTable datatable1 =GetDetails(strOrderId);
datatable1.TableName = "Document";
dataset1.Tables.Add(datatable1.Copy());
ReportParameter[] @params = new ReportParameter[4];
localReport.SetParameters(@params);
//A method that returns a collection for our report Note: A report can have multiple data sources
localReport.DataSources.Add(new ReportDataSource("dataset", dataset1.Tables[0]));
string reportType = "pdf";
string mimeType = string.Empty;
string encoding = string.Empty;
string fileNameExtension = string.Empty;
string deviceInfo = "<DeviceInfo>" + " <OutputFormat>pdf</OutputFormat>" + "</DeviceInfo>";
Warning[] warnings = null;
string[] streams = null;
byte[] renderedBytes = null;
//Render the report
renderedBytes = localReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
//Clear the response stream and write the bytes to the outputstream
//Set content-disposition to "attachment" so that user is prompted to take an action on the file (open or save)
Response.Clear();
Response.ContentType = mimeType;
strOrderId = "Doc" + strOrderId;
Response.AddHeader("content-disposition", ("attachment; filename=" + strOrderId + ".pdf"));
Response.BinaryWrite(renderedBytes);
Response.End(); }
}
catch (Exception ex)
{
lblMessage.Text = objUtl.GetErrorMessage(ex, this);
lblMessage.Visible = true;
}
}