2008-10-27 99 views
1

我有一个从ObjectDataSource填充的报告。该报告包括每个用户可扩展/可折叠的节点。MS Reportviewer - 在ViewState中保存展开/折叠的节点?

我允许查看者通过在数据源上设置FilterExpression来过滤报告,然后调用ReportViewer1.LocalReport.Refresh()。这是在回发期间完成的。

这将过滤结果,但展开/折叠节点的状态会丢失。有没有办法将展开/折叠节点存储在ViewState中?还是有更好的方法来完成这一切?

回答

1

我知道自从问了这个问题以来,我知道它已经有一段时间了,但是因为最近我不得不经历这个,所以我想和可能与此相关的人分享我的经验。

这很棘手,但如果您向报告中添加多值参数,并且这些值与可触摸字段中的值相匹配,那么您可以在网格中编写一个组表达式(并在标签中使它们也可以消失)。一旦完成,你只需要跟踪什么是切换(这很难,但可以用JavaScript)。

基本上,reportviewer控件中有两个隐藏的子控件(vs2008中的索引4 & 5),其中包含事件的名称和单击的表格单元的标识, javascript并跟踪所有可触摸字段的状态。