C# 在运行时选择或取消选择报表列

C# 在运行时选择或取消选择报表列,c#,winforms,crystal-reports,C#,Winforms,Crystal Reports,我想建立一个工资单报告,用户可以选择或取消选择用户想要的列。例如,对于每个员工,用户可以选择代表列表中每一列的复选框,如-Nic、净工资、无薪日等的任意组合。我认为所有列都会在SP中返回,并且只显示选定的列。您能告诉我一些方法吗 如果可以将选定列的组合缩小到可管理的最小值,则可以为每个组合创建一个子报告,并抑制除右侧子报告以外的所有子报告 蒂兰。我不知道有哪款crystal reports演示应用程序可以让你的工作更轻松,但如果你被宠坏了,我也不会感到惊讶。SAP提供报告服务软件及其仪表板设计和

我想建立一个工资单报告,用户可以选择或取消选择用户想要的列。例如,对于每个员工,用户可以选择代表列表中每一列的复选框,如-Nic、净工资、无薪日等的任意组合。我认为所有列都会在SP中返回,并且只显示选定的列。您能告诉我一些方法吗

如果可以将选定列的组合缩小到可管理的最小值,则可以为每个组合创建一个子报告,并抑制除右侧子报告以外的所有子报告

蒂兰。我不知道有哪款crystal reports演示应用程序可以让你的工作更轻松,但如果你被宠坏了,我也不会感到惊讶。SAP提供报告服务软件及其仪表板设计和Crystal Server上的资料可能值得一看()。然而,这对于您的目的来说可能是过分的

另一种方法是尝试定义“松散”列(我不知道专业术语!)。我清楚地记得几年前完成了这项工作,但不记得具体细节,也无法再查看报告(以前的雇主)。包括步骤。它很难看,并且有一系列的缺点(巨大的间隙,其中柱被压制成一个大间隙),但它可能会解决您的问题

在他的报告中创建通用列,然后动态构建他的查询。他的表格只适合一份报告,但我认为你可以根据自己的需要调整他的解决方案

可能会被利用来满足你的目的(我想)。我对这些方面没有什么经验,但似乎稍微调整一下可能会允许使用动态列

更好的选择(到目前为止)是在演示文稿中处理这个问题。您已经标记了WinForms和C#,因此我可以假设您创建了一个带有报表查看器的win应用程序。假设您在报表中定义了数据集,那么代码应该能够通过查看报表的数据定义在运行时处理列的创建(或抑制/启用和重新定位)。我已经读到,在运行时创建列在某种程度上取决于您的CR/VS版本,我只能猜测


希望这能有所帮助。

您可以根据这些参数抑制报表中的每一列(和标题),但我认为您不能将其余的列移到一起。我在几年前解决了这个问题,并最终制作了一个新的演示应用程序,它允许这种级别的定制,因为我不知道如何在运行时调整报表的布局。有没有我可以得到的演示应用程序?感谢您的简短回复,我将尝试解决您的建议如果我可以根据复选框值对列进行优化,则可以实现上述要求否?(Sp返回所有列)是的,可以这样做,您的输出将有很大的差距。抑制列并不意味着其右侧的列将移动以填充新清空的空间。这篇文章(“ThisGuy”)展示了如何动态构建查询并使其适合通用布局,从而避免了这个问题。根据您的情况对其进行修改的程度取决于(至少部分取决于)查询的复杂性。您的存储过程是否在其他地方使用也是一个考虑因素。我有大约35列,写35个sp是否值得,其中必须有35个sp和35个报告。我会说不,这不值得。修改表,您还有35(x2)个进一步的修改要做。有更有效、更经济的方法来实现这一点。我很抱歉地说,如果我建议的这些方法超出了你的能力范围,你可能已经吃得太多了。建议创建多个标题和详细信息部分。我猜他指的是每一列的组合。在您的情况下,这听起来就像创建35个不同的SP/报告一样糟糕!