自定义过程模板之自定义报表

来分享喜悦喽,o(∩_∩)o 哈哈

首先请先阅读一下MSDN的文献,提供一下网址 http://msdn.microsoft.com/zh-cn/library/vstudio/ms243910(v=vs.110).aspx

简单说明下我使用的是CMMI的模板。下面介绍一下我的操作步骤。

(1)首先下载CMMI的过程模版;

(2)把自己的rdl文件放在MSF for CMMI Process Improvement v5.0\Reports\  目录下;--rdl的创建下面再介绍。

(3)修改MSF for CMMI Process Improvement v5.0\Reports\ReportsTasks.xml文件,在<reports>下添加一个<report>标签

我有个大胆的猜测是把我们添加的<report>标签里面的<parameters>标签删除,虽然微软的说明里面是<parameter>是<reports>的一个必须选项。

(4)保存之后,将模版重新上载到项目集合,新建一个项目即可。若是报表报错,可以在sharepoint尝试修改一下数据源

下面讲一下我的报表的创建过程,我做的是最简单的报表,只获取当前项目名称。

(1)首先创建一个共享数据源,叫TfsReportDS,注意大小写;

(2)新建一个报表,给报表创建3个参数

 

ExplicitProject:Text类型,允许空白值,默认值指定为  /TfsReports/Collection0/ProcessTestProjectCMMI0;--我从系统的报表里拷的

ReportPath:Text类型,默认值指定为  =IIF(LEN(Globals!ReportFolder) > 0,Globals!ReportFolder, Parameters!ExplicitProject.Value) ;

ProjectName:Text类型,默认值从数据集查询中获取值。----我的是从dsProjectGuid数据集中获取ProjectNodeName

 

下面的sql是dsProjectGuid的查询文本,我从系统的报表里拷贝的,o(∩_∩)o 哈哈

SELECT TOP 1 p.ProjectNodeGUID, p.ProjectNodeName FROM
(
    SELECT ProjectNodeGUID, ProjectNodeName, 1 AS RowRank FROM GetProjectNodeInfoFromReportFolder(@ReportPath)
    UNION
    SELECT '00000000-0000-0000-0000-000000000000' AS ProjectNodeGUID, 'missing' AS ProjectNodeName, 0 AS RowRank
) p ORDER BY p.RowRank DESC

然后我自己建了个数据集使用ProjectName这个参数查询数据。注意一下这个数据集在本地运行可能无结果,我们放在模版里创建新项目,在服务器上允许的时候即可获取当前项目名称。

 

 

 

 

转载于:https://www.cnblogs.com/huhu-xiaomaomi/p/3730335.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 WPF 中实现自定义模板报表可以使用 FlowDocument 和 DocumentPaginator 类。FlowDocument 是一种可扩展标记语言(XAML)文档格式,用于呈现富文本内容,而 DocumentPaginator 类则可以将 FlowDocument 分页并打印成报表。 下面是一个基本的实现步骤: 1. 创建一个 WPF 应用程序,添加一个 FlowDocument 控件。 2. 设计并创建报表模板,包括表头、表格和页脚等内容,并使用 XAML 语言编写。 3. 在代码中加载报表模板,并将数据填充到其中。 4. 使用 DocumentPaginator 类将 FlowDocument 分页,并将其打印成报表。 以下是一些代码示例,演示如何使用 FlowDocument 和 DocumentPaginator 实现自定义模板报表: ```csharp // 加载报表模板 var report = new FlowDocument(); var reader = new XamlReader(); report.Blocks.AddRange((IEnumerable<Block>)reader.Load(xamlString)); // 填充数据 var table = report.FindName("table") as Table; foreach (var row in data) { var tableRow = new TableRow(); tableRow.Cells.Add(new TableCell(new Paragraph(new Run(row.Name)))); tableRow.Cells.Add(new TableCell(new Paragraph(new Run(row.Value)))); table.Rows.Add(tableRow); } // 分页并打印成报表 var paginator = ((IDocumentPaginatorSource)report).DocumentPaginator; var dlg = new PrintDialog(); if (dlg.ShowDialog() == true) { dlg.PrintDocument(paginator, "Report"); } ``` 需要注意的是,在实际应用中,可能需要将数据绑定到模板中的控件,或者使用其他类似的技术实现更复杂的报表功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值