我的要求是在單擊網格中的圖像按鈕時生成PDF。在同一頁中,我有一個搜索按鈕(btnSearch)。我已經實現OnNeedDataSource event.While點擊搜索按鈕,我想重新綁定radgrid控件,但我得到這個errorerror「ErrorDetails信息:System.ArgumentException:不能與ID‘upnlPdf’,因爲它並沒有使用ScriptManager註冊註銷的UpdatePanel。如果從控制樹中刪除UpdatePanel並在稍後再次添加UpdatePanel,則可能會發生這種情況,這是不受支持的。參數名稱:System.Web.UI.UpdatePanel.OnUnload上的System.Web.UI.ScriptManager.System.Web.UI.IScriptManagerInternal.UnregisterUpdatePanel(UpdatePanel updatePanel)上的System.Web.UI.PageRequestManager.UnregisterUpdatePanel(UpdatePanel updatePanel)上的updatePanel (EventArgs e)在System.Web.UI.Control.UnloadRecursive(布爾部署)在System.Web.UI.Control.UnloadRecursive(布爾部署)在System.Web.UI.Control.UnloadRecursive(布爾部署)在System.Web在System.Web.UI.Control.RemovedControl(控件控件)System.Web.UI.ControlCollection.RemoveAt(Int32索引)System.Web.UI.ControlCollection.Clear()上的.UI.Control.UnloadRecursive(布爾dispose)在System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable的數據)在System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable的數據)在System.Web.UI.DataSourceView.Select(DataSourceSelectArguments參數,DataSourceViewSelectCallback回調)在System.Web.UI.WebControls.Dat在Telerik.Web.UI的Telerik.Web.UI.GridTableView.DataBind()處的System.Web.UI.WebControls.BaseDataBoundControl.DataBind()處的Telerik.Web.UI.GridTableView.PerformSelect()處的aBoundControl.PerformSelect()。在Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason)上的RadGrid.DataBind()在Telerik.Web.UI.RadGrid.Rebind()上的btnSearch_Click(Object sender,EventArgs e)「。在radgrid上實現PDF生成後按鈕單擊時出錯
在ASPX頁面
<%@ 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>
在後面的代碼
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;
}
}