[转]使用 WebForms ReportViewer 控件

正文转自:http://technet.microsoft.com/zh-cn/library/aa337091

 

如若一旦翻看部署到报表服务器的表格要于地方文件系统上有的报表,您可以以 Web
应用程序中利用 WebForms ReportViewer 控件来表现其。

 

 

 

 

 

 

用 ReportViewer 控件添加到 Web 应用程序

  1. 使用
    Microsoft Visual C# 或 Microsoft Visual Basic 创建一个新的
    Microsoft ASP.NET 网站。


    或 –

    开拓一个存世的
    ASP.NET 网站并丰富一个新的 Web 窗体。

  2. 以“工具箱”中找到 ReportViewer 控件。 如果“工具箱”不可见,则足以通过由“视图”菜单中选择“工具箱”来开展走访。


  3. ReportViewer 控件拖到 Web 窗体的统筹图面上。

    称为也
    reportViewer1 的 ReportViewer 控件便上加至拖欠窗体中。

以控件添加至拖欠窗体之后,“ReportViewer
任务”智能标记将面世,提示而选择某个同表。 如果您如果查看的报表都布局到报表服务器上,则从“选择报表”下拉列表中挑选<服务器报表>选项。 选择<服务器报表>选项后,将面世个别独附加的性能:“报表服务器 URL”和“报表路径”。 “报表服务器 URL”是因为相应报表服务器的地点,“报表路径”是指为设显现的报表的完整路径。
如果您想只要因本地模式查看报表,则选择“设计新报表”选项为启动报表设计器或选择就是水土保持项目之同有些的报表。

在长途处理模式下查看报表)


下的言传身教演示如何表现已部署至某个同报表服务器的表。
此示例使用     AdventureWorks2012  
示例报表项目随附的 Sales Order Detail 报表。

该示例使用并的
Windows 身份验证,因此你首先得启用模拟。 为者,将以下行插入
web.config 文件:

 

复制window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_0ff6de4d-61a7-4a1b-a1a8-dc6e9b1ce19d’);)

<!-- Web.config file. -->
<identity impersonate="true"/>
注意

默认情况下,模拟处于禁用状态。

C#

VB

复制window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_2aa292be-4209-49db-8bcb-ecc34256c22b’);)

protected void Page_Init(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // Set the processing mode for the ReportViewer to Remote
        reportViewer.ProcessingMode = ProcessingMode.Remote;

        ServerReport serverReport = reportViewer.ServerReport;

        // Set the report server URL and report path
        serverReport.ReportServerUrl =
            new Uri("http://<Server Name>/reportserver");
        serverReport.ReportPath =
            "/AdventureWorks Sample Reports/Sales Order Detail";

        // Create the sales order number report parameter
        ReportParameter salesOrderNumber = new ReportParameter();
        salesOrderNumber.Name = "SalesOrderNumber";
        salesOrderNumber.Values.Add("SO43661");

        // Set the report parameters for the report
        reportViewer.ServerReport.SetParameters(
            new ReportParameter[] { salesOrderNumber });
    }
}

于地方处理模式下查看报表)


下的以身作则演示如何表现作为
Windows 应用程序的平等组成部分还要没有安排到报表服务器的表格。

 

 

 

 

 

 

拿 Sales Order Detail 报表上加至网站

  1. 开辟该表将丰富到之网站。

  2. 以“网站”菜单中,选择“添加现有项”。

  3. 浏览到安装了
    AdventureWorks 报表示例项目之岗位。

    默认位置是
    C:\Program Files\Microsoft SQL Server\100\Samples\Reporting
    Services\Report Samples\AdventureWorks Sample Reports。


  4. Sales Order Detail.rdl 文件并单击“添加”按钮。

    Sales
    Order Detail.rdl 文件现在许诺是拖欠型之均等有的。

  5. 于缓解方案资源管理器中右键单击
    Sales Order Detail.rdl 文件,然后选择“重命名”。 将该报表重命名也
    Sales Order Detail.rdlc,然后按照 Enter。

    假定解决方案资源管理器不可见,则可由此打“视图”菜单中选择“解决方案SQL Server资源管理器”来用那开辟。

 

以下代码示例将为销售订单数创建一个数据集,然后为当地模式表现
Sales Order Detail 报表。

C#

VB

复制window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_5b2d9d9f-d223-4308-a60b-eff4256eeade’);)

protected void Page_Init(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // Set the processing mode for the ReportViewer to Local
        reportViewer.ProcessingMode = ProcessingMode.Local;

        LocalReport localReport = reportViewer.LocalReport;

        localReport.ReportPath = "Sales Order Detail.rdlc";

        DataSet dataset = new DataSet("Sales Order Detail");

        string salesOrderNumber = "SO43661";

        GetSalesOrderData(salesOrderNumber, ref dataset);

        ReportDataSource dsSalesOrder = new ReportDataSource();
        dsSalesOrder.Name = "SalesOrder";
        dsSalesOrder.Value = dataset.Tables["SalesOrder"];

        localReport.DataSources.Add(dsSalesOrder);

        GetSalesOrderDetailData(salesOrderNumber, ref dataset);

        ReportDataSource dsSalesOrderDetail = new ReportDataSource();
        dsSalesOrderDetail.Name = "SalesOrderDetail";
        dsSalesOrderDetail.Value = dataset.Tables["SalesOrderDetail"];

        localReport.DataSources.Add(dsSalesOrderDetail);

        // Create the sales order number report parameter
        ReportParameter rpSalesOrderNumber = new ReportParameter();
        rpSalesOrderNumber.Name = "SalesOrderNumber";
        rpSalesOrderNumber.Values.Add("SO43661");

        // Set the report parameters for the report
        localReport.SetParameters(
            new ReportParameter[] { rpSalesOrderNumber });
    }
}

private void GetSalesOrderData(string salesOrderNumber,
                           ref DataSet dsSalesOrder)
{
    string sqlSalesOrder =
        "SELECT SOH.SalesOrderNumber, S.Name AS Store, " +
        "       SOH.OrderDate, C.FirstName AS SalesFirstName, " +
        "       C.LastName AS SalesLastName, E.Title AS " +
        "       SalesTitle, SOH.PurchaseOrderNumber, " +
        "       SM.Name AS ShipMethod, BA.AddressLine1 " +
        "       AS BillAddress1, BA.AddressLine2 AS " +
        "       BillAddress2, BA.City AS BillCity, " +
        "       BA.PostalCode AS BillPostalCode, BSP.Name " +
        "       AS BillStateProvince, BCR.Name AS " +
        "       BillCountryRegion, SA.AddressLine1 AS " +
        "       ShipAddress1, SA.AddressLine2 AS " +
        "       ShipAddress2, SA.City AS ShipCity, " +
        "       SA.PostalCode AS ShipPostalCode, SSP.Name " +
        "       AS ShipStateProvince, SCR.Name AS " +
        "       ShipCountryRegion, CC.Phone AS CustPhone, " +
        "       CC.FirstName AS CustFirstName, CC.LastName " +
        "       AS CustLastName " +
        "FROM   Person.Address SA INNER JOIN " +
        "       Person.StateProvince SSP ON " +
        "       SA.StateProvinceID = SSP.StateProvinceID " +
        "       INNER JOIN Person.CountryRegion SCR ON " +
        "       SSP.CountryRegionCode = SCR.CountryRegionCode " +
        "       RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " +
        "       LEFT OUTER JOIN  Person.Contact CC ON " +
        "       SOH.ContactID = CC.ContactID LEFT OUTER JOIN" +
        "       Person.Address BA INNER JOIN " +
        "       Person.StateProvince BSP ON " +
        "       BA.StateProvinceID = BSP.StateProvinceID " +
        "       INNER JOIN Person.CountryRegion BCR ON " +
        "       BSP.CountryRegionCode = " +
        "       BCR.CountryRegionCode ON SOH.BillToAddressID " +
        "       = BA.AddressID ON  SA.AddressID = " +
        "       SOH.ShipToAddressID LEFT OUTER JOIN " +
        "       Person.Contact C RIGHT OUTER JOIN " +
        "       HumanResources.Employee E ON C.ContactID = " +
        "       E.ContactID ON SOH.SalesPersonID = " +
        "       E.EmployeeID LEFT OUTER JOIN " +
        "       Purchasing.ShipMethod SM ON SOH.ShipMethodID " +
        "       = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" +
        "        S ON SOH.CustomerID = S.CustomerID " +
        "WHERE  (SOH.SalesOrderNumber = @SalesOrderNumber)";

    SqlConnection connection = new
        SqlConnection("Data Source=(local); " +
                      "Initial Catalog=AdventureWorks; " +
                      "Integrated Security=SSPI");

    SqlCommand command =
        new SqlCommand(sqlSalesOrder, connection);

    command.Parameters.Add(
        new SqlParameter("SalesOrderNumber",
        salesOrderNumber));

    SqlDataAdapter salesOrderAdapter = new
        SqlDataAdapter(command);

    salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder");
}

private void GetSalesOrderDetailData(string salesOrderNumber,
                       ref DataSet dsSalesOrder)
{
    string sqlSalesOrderDetail =
        "SELECT  SOD.SalesOrderDetailID, SOD.OrderQty, " +
        "        SOD.UnitPrice, CASE WHEN " +
        "        SOD.UnitPriceDiscount IS NULL THEN 0 " +
        "        ELSE SOD.UnitPriceDiscount END AS " +
        "        UnitPriceDiscount, SOD.LineTotal, " +
        "        SOD.CarrierTrackingNumber, " +
        "        SOD.SalesOrderID, P.Name, P.ProductNumber " +
        "FROM    Sales.SalesOrderDetail SOD INNER JOIN " +
        "        Production.Product P ON SOD.ProductID = " +
        "        P.ProductID INNER JOIN " +
        "        Sales.SalesOrderHeader SOH ON " +
        "        SOD.SalesOrderID = SOH.SalesOrderID " +
        "WHERE   (SOH.SalesOrderNumber = @SalesOrderNumber) " +
        "ORDER BY SOD.SalesOrderDetailID";

    using (SqlConnection connection = new
        SqlConnection("Data Source=(local); " +
                      "Initial Catalog=AdventureWorks; " +
                      "Integrated Security=SSPI"))
    {

        SqlCommand command =
            new SqlCommand(sqlSalesOrderDetail, connection);

        command.Parameters.Add(
            new SqlParameter("SalesOrderNumber",
            salesOrderNumber));

        SqlDataAdapter salesOrderDetailAdapter = new
            SqlDataAdapter(command);

        salesOrderDetailAdapter.Fill(dsSalesOrder,
            "SalesOrderDetail");
    }
}

请参阅)


概念

采用 ReportViewer 控件集成 Reporting
Services

相关文章