2008-09-19 159 views

回答

7

絕對是。

您正在查找的是ReportViewer控件,它位於Microsoft.Reporting.WebForms程序集中。它可以讓你在你的網絡表單上放置一個控制權,爲用戶提供設置報表參數和獲取報表的界面。

或者,您可以自己設置所有參數並以您需要的任何格式輸出報告。我們在我們的應用程序中使用它來輸出PDF。

例如 - 這是我們如何爲我們的報告之一設置reportviewer對象並獲取PDF,然後將其發回給用戶。特定的代碼塊是一個Web處理程序。

public void ProcessRequest(HttpContext context) 
{ 
    string report = null; 
    int managerId = -1; 
    int planId = -1; 
    GetParametersFromSession(context.Session, out report, out managerId, out planId); 
    if (report == null || managerId == -1 || planId == -1) 
    { 
     return; 
    } 

    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

    List<ReportParameter> parameters = new List<ReportParameter>(); 
    parameters.Add(new ReportParameter("Prefix", report)); 
    parameters.Add(new ReportParameter("ManagerId", managerId.ToString())); 
    parameters.Add(new ReportParameter("ActionPlanId", planId.ToString())); 
    string language = Thread.CurrentThread.CurrentCulture.Name; 
    language = String.Format("{0}_{1}", language.Substring(0, 2), language.Substring(3, 2).ToLower()); 
    parameters.Add(new ReportParameter("Lang", language)); 

    ReportViewer rv = new ReportViewer(); 
    rv.ProcessingMode = ProcessingMode.Remote; 
    rv.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServer"]); 
    if (ConfigurationManager.AppSettings["DbYear"] == "2007") 
    { 
     rv.ServerReport.ReportPath = "/ActionPlanning/Plan"; 
    } 
    else 
    { 
     rv.ServerReport.ReportPath = String.Format("/ActionPlanning{0}/Plan", ConfigurationManager.AppSettings["DbYear"]); 
    } 
    rv.ServerReport.SetParameters(parameters); 

    string mimeType = null; 
    string encoding = null; 
    string extension = null; 
    string[] streamIds = null; 
    Warning[] warnings = null; 
    byte[] output = rv.ServerReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamIds, out warnings); 

    context.Response.ContentType = mimeType; 
    context.Response.BinaryWrite(output); 
} 
0

但是要注意,你會失去一些功能,比如當你不使用URL訪問方法的參數選擇的東西。

報告服務器URL訪問支持HTML查看器和報告工具欄的擴展功能。 SOAP API不支持這種類型的呈現報告。如果使用SOAP呈現報表,則需要設計和開發自己的報表工具欄。

http://msdn.microsoft.com/en-us/library/ms155089.aspx

相關問題