FastReport .Net如何将Bands从一份 告复制到另一份 告

有时需要在另一个 告中使用一部分 告。在简单的情况下,您可以使用 表继承来执行此操作。

Fastreport.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!

有时需要在另一个 告中使用一部分 告。在简单的情况下,您可以使用 表继承来执行此操作。

例如,在某些情况下,所有 告都有共同的元素(公司徽标,签名等)。然后,可以将这些对象移至父 表,并在创建子 表时将其自动复制。因此,您无需每次都手动复制它们,从而大大简化并加速了新 告的创建。此外,如果您更改了父 表中的某些内容,这些更改也将反映在所有子 表中。

但是, 告继承有许多限制。在某些情况下,一个 告只有一个“父” 告,而使一个“父” 告成为完全不同的 告变得很有必要。似乎可以更改BaseReport属性,但不幸的是,它无法解决。

但是,可以通过一种奇妙的方式解决此问题-通过将一个 告代码中的带替换为另一个 告中的带。

假设有一个基准 告(base.frx),并且需要将其范围复制到子 告(child.frx)。您需要用“ Data1”名称替换PageHeader,PageFooter和DataBand。以下代码示例假定两个 告都位于C驱动器的根文件夹中。

首先,您需要下载两个 告:

Report base = new Report();base.Load(@"C:base.frx");Report child = new Report();child.Load(@"C:child.frx");

下一步是从两个 告中获取页面。知道页面名称很重要。下面的示例假定两个 告中的页面名称均为“ Page1”:

ReportPage basePage = base.FindObject("Page1") as ReportPage;ReportPage childPage = child.FindObject("Page1") as ReportPage;

如果您不知道页面名称,则可以从索引中获取它们。例如,进一步,我们可以访问两个 告的第一页:

ReportPage basePage = baseReport.Pages[0] as ReportPage;ReportPage childPage = childReport.Pages[0] as ReportPage;

这两个选项都是合适的,并且会导致相同的结果。

现在,您可以替换PageHeader和 PageFooter。很简单:

childPage.PageHeader = basePage.PageHeader;childPage.PageFooter = basePage.PageFooter;

这些行复制具有所有属性和设置的两个波段。此外,位于它们上面的所有对象都将被复制,并且属性不会丢失。

接下来,将DataBand替换为“ Data1”名称:

DataBand baseBand = basePage.FindObject("Data1") as DataBand;DataBand childBand = childPage.FindObject("Data1") as DataBand;// необходимо получить индекс Data1 в дочернем отчетеint childBandIndex = childPage.Bands.IndexOf(childBand);// теперь его можно удалитьchildPage.Bands.Remove(childBand);// и вставить на его место бэнд из базового отчетаchildPage.Bands.Insert(bandIndex, baseBand);

最后,将复制具有所有属性和子对象的波段,并传输与负责DataSource属性的数据源的绑定。没有此绑定,波段将无法正常工作,也不会从数据库输出数据。

我们只需要复制数据源。可以使用以下代码段完成此操作:

for (int i = 0; i < baseReport.Dictionary.DataSources.Count; i++){ childReport.Dictionary.DataSources.Add(baseReport.Dictionary.DataSources[i]);}

因此,所有数据源均已复制。如果没有必要,则只能克隆所需的克隆。

而已。几十行代码行使将带和对象从一个 告复制到另一个 告成为可能。如果乐队中有很多对象,那么与设计师复制它们会很漫长而乏味,并且从头开始创建它们会花费更长的时间。

当然,如果在此示例中基线 告仅复制了条带,则可以通过简单地复制和粘贴 告文件来更轻松地执行此任务。撇开笑话,您可以在不需要新 告中所有波段的情况下,使用此方法从一个集合中复制一个或多个波段。或者,您可以从一个 表中获取页眉,从另一个 表中获取数据带,并从第三个 表中获取页脚。

还想要更多吗可以点击阅读【FastReport 表2020最新资源盘点】查找需要的教程资源。让人兴奋的是FastReport .NET 表正在 火热销售中!低至3701元起!>>查看价格详情

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐

发表回复

登录后才能评论