Adding tables at run time in Telerik Reporting

时间:2016-08-31 18:41:44

标签: telerik telerik-mvc telerik-reporting

I've been reading Telerik's documentation and I'm not sure if this is possible: I'm being asked to add tables to a report at run time, without doing so programmatically. A query is run that fetches hierarchical data, and the report owner would like to add a new table to the report for each member of the topmost parent, so that each topmost parent has their own table, with a text box title on top of the table containing the parent's name, in the following pattern:

TopParent1

[Parent1's table]

TopParent2

[Parent2's table]

...

Does anyone know how I could go about doing that without doing so programmatically? Every example and/or bit of documentation I've seen pertains to programmatically adding tables.

2 个答案:

答案 0 :(得分:2)



  

可以在运行时向报表添加表,而无需执行此操作   那么以编程方式?

R: 无法以编程方式添加表格:每个元素的大小,确切的位置等等.. .. ..


如何创建一个分层的'带有条件显示的报告?

1 /。分层报告。

阅读如何:使用子报告项创建主详情报告<{3}}

使用the telerik official tutorial,您可以在另一个报告中显示一个报告。每个SubReport report item的数据可能完全不同。

但是你可以通过SubReport实现父母/中国的关系。

  

/!\注意/!\
  页面部分与报告本身无关,但与纸张或屏幕相关。因此,将忽略嵌套/详细报告的页面部分,并且只显示主报告的页面部分。

为了在每个页面上重复与页面部分类似的部分,请考虑使用未绑定的组(未指定分组条件)并将其部分的PrintOnEveryPage属性设置为True。请注意,您不能在组部分中使用PageCount和PageNumber全局对象。

2 /。条件显示

您需要Passing Parameters to a SubReport

如果您希望用户选择是否需要某个子报告。 您可以通过将参数从调用应用程序传递到报表构造函数来完成此操作。 并使用像Bitfield或枚举这样的东西来选择要显示的内容。

那么主报告代码中的C#控制器呢?

public myReportConstructor(int SubreportToDisplay)
{
    InitializeComponent();
    Hiden_Display(SubreportToDisplay);
}

private void Hiden_Display(int _code)
{
    if ((_code & (int)myEnum.InfoClient) != (int)myEnum.InfoClient) 
        HideNShrink(SUBREPORT_CLIENT);
    if ((_code & (int)myEnum.Item) != (int)myEnum.Item) 
    { 
        HideNShrink(SUBREPORT_Product.Item1); 
        HideNShrink(SUBREPORT_Product.ItemTWO); 
    }
}

 private void HideNShrink(ReportItem target)
{// http://www.telerik.com/support/kb/reporting/details/collapse-the-container-when-hiding-child-report-items-
    target.Visible = false;
    target.Height = Telerik.Reporting.Drawing.Unit.Pixel(1); 
} 

我在设计器中使用了一个小技巧,每个子报表项都设置为public:

 private Telerik.Reporting.TextBox textBox17;
 public Telerik.Reporting.SubReport SubReport_Client;
 public Sub_Client sub_CLI1;

隐藏客户端时,我会使用SubReport_Client 那是SubReport item,我SubReport Sub_Client的容器;
(是的,他们将容器命名为容器,并且容器名称相同,这在First中令人困惑,但它的Vs / Telerik选择)
隐藏其他子报告中的子报告时 我使用嵌套嵌套ContaintSubReport的{​​{1}}容器 喜欢:SubReport

答案 1 :(得分:0)

我能够回答我自己的问题如下:

  1. 创建两个空白报告。
  2. 在选择用于详细报告的报告中,删除报告页眉和页脚。
  3. 将数据源和参数添加到详细报告(在我的示例中为SQL数据源),并将报告数据源设置为此处创建的数据源。
  4. 将报告组添加到报告中,并将分组值设置为查询绑定到报告的最顶层结果。 (分组= Fields.Parent)
  5. 创建文本框,其值设置为顶部结果的字段(textbox1.Value = Fields.Parent),或使用数据资源管理器将Fields.Parent拖放到组标题中。
  6. 创建文本框以模拟表格列标题(每列标题的一个文本框),并将它们放入组标题中,文本框包含最顶层的结果(或Fields.Parent)。
  7. 在报告的详细信息部分中拖动或创建查询中其余字段的文本字段(Fields.Child1,Fields.Child2,Fields.Child3等),与其列标题垂直对齐。预览报告 - 它应该包含一个类似于表格的结构,可以在每个顶级结果上重复。
  8. 切换到其他报告。
  9. 向该报告添加相同的参数。
  10. 将子报表项添加到该报表的详细信息部分。
  11. 将子报表报表源设置为“类型”和“报表文档”,然后选择详细报表的名称(此处创建的第一个)。
  12. 将子报表的参数/ s设置为子报表中使用的相同参数。
  13. 使用它,我能够在查询的第一列中为每个项目添加一个表。首先创建的报告用作查询的包装器,并且因为它作为子报表项放在另一个报表中并且我创建了分组,所以允许它重复所需的内容以显示所有行。查询。

    我为此使用了master-detail reportsreport structures的Telerik文档。