千家信息网

FastReport .Net如何将Bands从一份报告复制到另一份报告的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,FastReport .Net如何将Bands从一份报告复制到另一份报告的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Fast
千家信息网最后更新 2026年11月03日FastReport .Net如何将Bands从一份报告复制到另一份报告的示例分析

FastReport .Net如何将Bands从一份报告复制到另一份报告的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

FastReport .Net是适用于Windows Forms,ASP.NET,MVC和.NET Core的全功能报表解决方案。它可以在Microsoft Visual Studio 2005-2019中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。

在FastReport .NET 2021.1的新版本中,我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。

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

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

但是,报告继承有许多限制。在某些情况下,一个报告只有一个"父"报告,而使一个"父"报告成为完全不同的报告变得很有必要。似乎可以更改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 .Net如何将Bands从一份报告复制到另一份报告的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

报告 报表 两个 对象 数据 示例 名称 属性 波段 代码 情况 页面 内容 数据源 问题 分析 必要 可以通过 文件 新报 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 北京路客互联网科技有限公司 互联网科技财经 盈实互联网科技 互联网最新的科技有限公司 互联网金融公司科技 互联网科技论坛 互联网科技公司名称 互联网金融监管科技 互联网公司会议桌创意科技软装饰 汉立互联网科技有限公司联系电话 互联网科技实习生岗位职责 金融科技与互联网金融相同和不同 互联网时代科技改变生活 佳云科技和互联网广告 重庆互联网医院沙龙医盟信息科技 想开互联网科技公司怎么样 互联网行业科技股 互联网企业科技类企业如何做账 互联网科技平台产品运营 保险科技 互联网保险 互联网科技工作委员会 广州百单互联网科技有限公司 西安互联网科技 互联网科技有哪些公司 互联网媒体平台算高科技产业 燊美集互联网科技有限公司 科技互联网经济论坛 互联网高科技绘画 株洲百竞科技的互联网营销顾问
0