构建 ASP.NET 报表 OLAP 应用程序(Part-3)






4.17/5 (4投票s)
如何构建 ASP.NET Web 报表应用程序
因此,从工具箱中拖动两个 CheckBoxList,一个用于产品维度,一个用于促销维度。对于第一个 CheckBoxList ProductList,我们需要将产品维度数据加载到其中。 按下智能箭头,然后选择数据源; 选择数据源,选择一个新的数据源,将打开一个新的对话框,选择数据源类型:数据库并给出 SqlDataSource ID:ProductsDataSource,然后确定,将打开一个新的对话框以选择数据连接,按新建连接; 数据源按更改 -> ; 数据提供程序选择 .NET framework Data Provider For OLE DB,然后确定; 添加连接对话框打开,在 OLE DB 提供程序中选择 Microsoft OLE DB Provider For Analysis Services 9.0; 服务器或文件名输入分析服务服务器名称,在我的例子中是“ramymahrous-lap”; 使用 Windows NT 集成安全性; 初始目录“AdventureWorksInternetSalesCube”; 测试连接,如果成功,请按确定,然后下一步,将此连接另存为“InternetSalesConnectionString”; 下一步; 配置数据源对话框打开; 选择指定自定义 SQL 语句或存储过程; 下一步; 出现错误消息,忽略它并按确定; 编写这个 MDX 脚本以获取产品数据
WITH MEMBER [Measures].[ParameterCaption] AS '[Dim Product].[English Product Name].CURRENTMEMBER.MEMBER_CAPTION' MEMBER [Measures].[ParameterValue] AS '[Dim Product].[English Product Name].CURRENTMEMBER.UNIQUENAME' SELECT {[Measures].[ParameterCaption], [Measures].[ParameterValue]} ON COLUMNS , [Dim Product].[English Product Name].ALLMEMBERS ON ROWS FROM [Adventure Works DW]
下一步; 测试查询; 如果它获取数据,请按完成,否则请告诉我您得到了什么。
我们返回到“选择数据源”对话框; 选择数据源:ProductsDataSource; 选择要在 CheckBoxList 中显示的数据字段:[Measures].[ParameterCaption]; 选择用于 CheckBoxList 值的字段:[Measures].[ParameterValue]; 确定 在 Promotion CheckBoxList 中重复此操作,但您不必再次配置连接,只需从连接中选择“IntertnetSalesConnectionString”,MDX 脚本将是这样的
WITH MEMBER [Measures].[ParameterCaption] AS '[Dim Promotion].[English Promotion Name].CURRENTMEMBER.MEMBER_CAPTION' MEMBER [Measures].[ParameterValue] AS '[Dim Promotion].[English Promotion Name].CURRENTMEMBER.UNIQUENAME' SELECT {[Measures].[ParameterCaption], [Measures].[ParameterValue]} ON COLUMNS , [Dim Promotion].[English Promotion Name].ALLMEMBERS ON ROWS FROM [Adventure Works DW]双击按钮以进入其点击事件处理程序,编写一些代码以调用报表并将参数值传递给它。
protected void Button1_Click(object sender, EventArgs e) { ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote; //work on report resides in the server not local ReportViewer1.ShowParameterPrompts = false; //hide parameters area and we will pass it through our controls ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://ramymahrous-lap/Reportserver_SQLSERVER2008/"); //Report Server URL not Report Server Manager URL ReportViewer1.ServerReport.ReportPath = "/InternetSaleCount_ByProduct_ByPromotion";//don't put report extension ".rdl" //using Reporing Service we know InternetSalesReport needs 2 paramters //DimProductEnglishProductName //DimPromotionEnglishPromotionName ListparametersList = new List (); parametersList.Add(GetParameterValue(PromotionList, "DimPromotionEnglishPromotionName"));//fills DimPromotionEnglishPromotionName with selected values user selected parametersList.Add(GetParameterValue(ProductsList, "DimProductEnglishProductName"));//fills DimProductEnglishProductName with selected values user selected ReportViewer1.ServerReport.SetParameters(parametersList); //set report paramters with values ReportViewer1.ServerReport.Refresh(); //display the report } /// /// Gets every Report parameters value(s) /// /// Which contains parameter values /// Parameter Name ///Report Parameter Microsoft.Reporting.WebForms.ReportParameter GetParameterValue(CheckBoxList checkListBox, string parameterName) { ListparameterValues = new List (); foreach (ListItem li in checkListBox.Items) { if (li.Selected) { if (li.Text == "All") { parameterValues.Add(li.Value); break; //no need to go through to know if user selected another value. } else parameterValues.Add(li.Value); } } return new Microsoft.Reporting.WebForms.ReportParameter(parameterName, parameterValues.ToArray(), true); }
按 Control + F5 构建并查看您的 Web 应用程序,它应该像这样工作。
我们已经完成了。 您应该注意一些重要的通知 1- 我没有开发数据层,我只是直接用数据填充了 CheckBoxList 控件 2- 要应用我们的基础架构架构 第一部分,您需要让用户有权访问报表服务器服务器并修改上述代码以添加一些行 ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials(用户名, 密码, 域); 您将在演示中找到 ReportServerCredentials 类附加。 这个类是某人开发的,我不记得是谁或网站。 3- 如果您有任何问题,请在 ramyamahrous@hotmail.com 上评论或联系我 .docx 格式的全文:reporting-service-via-asp 演练演示:http://cid-3e2288e7a8e55f56.skydrive.live.com/self.aspx/Public%20folder/Reporting%20Service%20via%20ASP.zip