【问题标题】:hide columns in crystal report at run time?在运行时隐藏水晶报表中的列?
【发布时间】:2011-01-27 14:22:16
【问题描述】:

如何在运行时隐藏水晶报表中的列? 感谢您的任何建议。

【问题讨论】:

    标签: c# asp.net sql-server-2005 crystal-reports


    【解决方案1】:

    您可以使用参数(可以在运行时设置哪些值)并将它们用于对象的抑制公式。

    【讨论】:

    • ok Jojo,如果我有 3 列并且我想隐藏第二列,这种方式是否可以在没有空格的情况下完成。非常感谢你。
    【解决方案2】:

    选项 1:使用条件抑制逻辑隐藏/显示冗余字段

    使用参数字段来驱动所需字段的抑制公式。

    如果您想消除字段之间的空格,则需要将字段堆叠在一起并适当地隐藏它们。在您的示例中,第 2 列将包含 field2 和 field3(均被抑制),第 3 列将包含 field2 和 field3(均被抑制)。在您的示例中,抑制逻辑将继续抑制第 2 列中的两个字段,但会在第 2 列中显示 field3(第 2 列中的 field2 仍将被抑制)。

    选项 2:使用“占位符”公式字段

    可以抑制的每一列数据都是一个公式字段。每个公式字段将使用 SELECT CASE 逻辑来选择要显示的所需字段。 “隐藏”字段只会返回一个空值。将编写您的 SELECT CASE 逻辑以确保从左到右填充值。格式需要在公式中完成,而不是在公式字段本身。

    选项 3:使用 SDK 动态更改报告。

    使用 CR .Net SDK 或旧的 CRAXDRT API 动态修改列的可见性和位置。

    但是,如果您使用此选项,您的部署选项将受到更多限制。

    【讨论】:

    • +1 这就是我作为 CR 专家会做的事情。越简单越好,保持简单!所以,更简单的是在抑制的条件下进行。您还可以禁止显示空白部分。
    • 谢谢克雷格的回答,那么“占位符”是什么意思,正如马库勒所说,我怎样才能抑制空白部分?非常感谢您的时间。另一个 Q 是否有动态报告允许最终用户选择显示\隐藏列?并感谢 Will Marcouiller
    • @Dani AM:在这种情况下,“占位符”是一个公式字段,其值是动态计算的。 “抑制空白部分”是该部分的一个属性——如果该行中的所有字段都为空,它将隐藏整行。根据您的描述,我认为这不是您想要的。 Crystal Reports 本身没有“动态”报告。您可以尝试使用交叉表,但这可能无法满足您的需求。您可以尝试使用我提到的任一 SDK 动态创建报告,但这更复杂。
    • 好的,我正在研究第一个选项,如果我想在不使用 SDK 的情况下生成动态报告,那么对于动态报告,sql 报告是一个不错的选择。感谢您的回复。
    • @Dani AM:“sql 报告”是什么意思?微软 SSRS?
    【解决方案3】:

    只是为了分享,我在

    找到了一篇很棒且简单的文章

    http://www.codeproject.com/KB/cs/Dynamic_Crystal_Report.aspx

    在水晶报表中使用参数将数据库中的数据动态加载到水晶报表中,并根据用户的选择指定报表中应显示的字段(特定表的列)。

    丹妮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多