在使用 Visual Studio 2013的Lightswitch客户端中,创建. rdlc 报告

分享于 

11分钟阅读

Web开发

  繁體 雙語

介绍

本文展示了如何使用 Visual Studio 2013在Lightswitch客户机中创建. rdlc 报告。 本文灵感来自Michael在Lightswitch中创建报告的文章。 在他的文章中,他使用 Visual Studio 2012使用RIA服务生成了报告数据。 然而,在 Visual Studio 2013中创建is的报告更容易使用ServerApplicationContext和一些带有 Visual Studio的内置方法。 本文所使用的一些想法来自华盛顿前面提到的for,所以我给他信用。

你需要什么

Visual Studio 2013运行这里代码

最后的报告看起来像这个 below:

https://www.codeproject.com/KB/LightSwitch/801969/FinalReport.png

A。设计表

我们将在本文中创建的报告来自一个假定的股票的LOB数据。 涉及两个表。 第一个是产品 table,仅包含ProductName字段。 第二个是 ProductStocks,包含字段,如下所示。

https://www.codeproject.com/KB/LightSwitch/801969/ProductTable.png

https://www.codeproject.com/KB/LightSwitch/801969/ProductStockTable.png

B。在服务器项目中创建报表文件夹

在服务器项目中创建图 below 中显示的文件夹

https://www.codeproject.com/KB/LightSwitch/801969/ServerFolder.png

单击of文件夹,单击新项并从新项的数据菜单中选择数据集并将它的命名为 ReportSource.xsd。

将DataTable从工具箱拖到. xsd 设计器,并给它命名。 然后为要创建的报表添加所需的字段作为列,如 below: -

https://www.codeproject.com/KB/LightSwitch/801969/DataTableDesign.png

注意:文件将在 ReportSource.Designer.vb 或者 ReportSource.Designer.cs 文件中生成类,我们只使用ProductSummaryDataTable类,ProductSummaryRow类和AddProductSummaryRow方法。 显示的below 是数据集设计器生成的代码


Partial Public Class ProductSummaryDataTable


 Inherits Global.System.Data.TypedTableBase(Of ProductSummaryRow)


. . .......



Public Overloads Function AddProductSummaryRow(ByVal ProductName As String,


 ByVal TotalStock As Integer, ByVal TotalQuantitySold As Integer,


 ByVal TotalQuantityReturned As Integer, ByVal Balance as Integer,


 ByVal Status As String) As ProductSummaryRow


. . .....




将. rdlc 报表添加到报表文件夹中。 不使用报表向导。

将 table 添加到报表设计器中,将在屏幕上出现一个数据集属性对话框。 为数据集( 1 ) 命名,并在 Data ( 2 ) 中选择 ReportSource.xsd 数据集。 然后在avail数据集( 3 ) 中选择 ProductSummary table。 table的列将显示在城市中: 显示为 below的框架( 4 )。 单击确定按钮。

https://www.codeproject.com/KB/LightSwitch/801969/DataSetProperties.png

  • 设计报表,并添加尽可以能多的功能,如显示的below。

https://www.codeproject.com/KB/LightSwitch/801969/ReportDesign.png

1- table 报表;2 - 条形图报表;3 - 饼图报表

C。在生成中包含. rdlc 文件

右键单击项目文件并选择编辑项目文件。

将 cursor 移动到屏幕上出现的文件的结尾。 你将看到 <生成文件 include="。/> 节"。 在另一个下面复制并粘贴一个部分,并将你的. rdlc 文件的位置添加到服务器中,如下所示


 <_BuidFile Include="LSReportApp.Serverdefault.aspx">


 <SubFolder>


 </SubFolder>


 <PublishType>


 </PublishType>


 </_BuildFile>



 <_BuidFile Include="LSReportApp.ServerReportsProductSummaryReport.rdlc">


 <SubFolder>


 </SubFolder>


 <PublishType>


 </PublishType>


 </_BuildFile>



保存文件并关闭文件。 然后右键单击项目文件并选择重新加载项目文件。

D。创建报表页面&编写代码的. aspx,以生成报表记录

右键单击ReportAspx文件夹并添加一个网页表单;将它的命名为 ProductStockSummary.aspx.

向 <div/> 元素中添加一个ReportViewer控件,并将它的命名为 ProductStockReportViewer。 设置所需的属性。

将 ScriptManager below 添加到 <div/> 元素。

注意:. aspx. desiner.vb 或者. cs 可能要求你包含reportviewer文件的文件属性。 只打开提示并单击要添加的文件。 这将添加reportviewer和scriptmanager要工作所必需的程序集。

右键单击aspx页并选择View代码"

按照显示的代码的Pattern 进行操作。


Imports Microsoft.Reporting.WebForms


Imports ReportSource



'In the PageLoad Event


Public Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs) Handles Me.Load


 If Not IsPostBack() Then


 ShowReport()


 End If


End Sub



'In the ShowReport Method, Load the. rdlc report and Load the report data


Private Sub ShowReport()


'Load the. rdlc report as a local report


 Me.ProductStockReportViewer.ProcessingMode = ProcessingMode.Local


 Me.ProductStockReportViewer.LocalReport.ReportPath = Server.MapPath("~/ProductSummaryReport.rdlc")



'Load the report data


 Me.ProductStockReportViewer.LocalReport.DataSources.Add( _


 New ReportDataSource("ProductSummaryDataSet", LoadDataList()))



'The LoadDataList Method is where you use ServerApplicationContext to access your


'product stock table and process your summary for the report. Then add the summary data


'to the ProductSummaryRow using the AddProductSummaryRow() method of the ProductSummaryDataTable.



Private Function LoadDataList() As List(Of ProductSummaryRow)


 Using ctx As ServerApplicationContext = ServerApplicationContext.CreateContext



'Get the Product Stock Query as IDataServiceQueryable. This makes fetching of record very fast


Dim pStock As IDataServiceQueryable(Of ProductStock) = ctx.DataWorkspace.ApplicationData.ProductStocks



 If pStock IsNot Nothing AndAlso pStock.Count> 0 Then



'Get All the product names as a list of String


 Dim ProductNameList As List(Of String) = _


ctx.DataWorkspace.ApplicationData.Products.Select(Function(a) a.ProductName).Execute().ToList()


 If ProductNameList IsNot Nothing AndAlso ProductNameList.Count> 0 Then


 Dim ProductSummaryList As New List(Of ProductSummaryRow)



 'Iterate through the ProductName List


 For Each ProductName In ProductNameList



 'Instantiate the summary variables


 Dim Product As String = Nothing


 Dim TotalStock As Integer = 0


 Dim TotalQuantitySold As Integer = 0


 Dim TotalQuantityRtd As Integer = 0


 Dim StockBalance As Integer = 0


 Dim StockStatus As String = Nothing



 'Set the variables


 Product = productName


 TotalStock = pStock.Sum(Function(a) a.Product.ProductName.Trim = productName.Trim And a.QuantityInStock)


 TotalQuantitySold = pStock.Sum(Function(a) a.ProductName.Trim = productName.Trim And a.QuantitySold)


 TotalQuantityRtd = pStock.Sum(Function(a) a.ProductName.Trim = productName.Trim And a.QuantityReturned)


 StockBalance = TotalStock - TotalQuantitySold + TotalQuantityRtd


 If StockBalance> = 2000 Then


 StockStatus = "Active"


 ElseIf StockBalance> 1000 And StockBalance <2000 Then


 StockStatus = "Reorder Stock"


 Else


 StockStatus = "Critical Stock"


 End If



 'Add the summary variables to the data-row of the table in the dataset


 Dim SummaryRow As ProductSummaryRow = New ProductSummaryDataTable().AddProductSummaryRow( _


 Product, TotalStock, TotalQuantitySold, TotalQuantityRtd, StockBalance, StockStatus)


 If Not SummaryRow.HasErrors Then


 ProductSummaryList.Add(SummaryRow)


 End If


 Next


 If ProductSummaryList.Count>0


 Return ProductSummaryList


 End If


End If


 End If


 End Using


 Return Nothing


 End Function




注意:生成报告摘要的代码可能是

  • 将概要记录生成到列表中的单独类
  • 调用生成摘要记录的单独控制器类
  • 生成概要记录的WCF RIA服务

因此,可以使用类似GetProductSummary的方法创建单独的类,并在LoadDataList函数中调用这里方法,然后将摘要变量分配给DataTable的AddProductSummaryRow方法。

E。查看报表

  • 为产品 table 创建屏幕,并向产品的table 添加一些记录
  • 为 ProductStock table 创建屏幕,并向 table 添加一些记录
  • 在产品库存的浏览屏幕上,在产品库存行布局下新建选项卡行布局,并将自定义控件添加到行布局,如图1 所示。

https://www.codeproject.com/KB/LightSwitch/801969/BrowseProductStock.png

  • 单击自定义控件属性上的编辑渲染代码,并将显示的代码写入渲染执行函数中

myapp.BrowseProductStocks.ScreenContent_render = function (element, contentItem){


//Show Loading Message


 var HtmlContent = $("<div></div>").html("<object width='800px' height='800px' 


 data='../reportsAspx/ProductStockSummary.aspx'/>");


 HtmlContent.appendTo($(element));


};



运行你的应用程序并浏览到报告页。 你可以将报表导出为 PDF。Word或者 Excel,如下所示

https://www.codeproject.com/KB/LightSwitch/801969/ExportReport.png

确认

我想确认 Micheal Worshinton的文章,为我编写这篇文章,为她的各种关于'分享优点"和论坛问题的论坛。


rep  REPO  Light  Report  Visual Studio  lights  
相关文章