【发布时间】:2015-04-01 13:30:06
【问题描述】:
目标:为 SSRS 报告中的每个参数创建一个列表框。
目前,如果报表只有一个参数,代码就可以正常工作。这个想法是我填充ValidValue 对象的列表并将标签添加到列表框。这应该发生在每个参数上。
如何以编程方式创建多个列表框,使用foreach 语句填充它们,然后将它们全部添加到网格中?
这是我的代码:
ReportParameterInfoCollection parameters;
parameters = reportViewer.ServerReport.GetParameters();
List<string> labels = new List<string>();
List<ValidValue> paramList = new List<ValidValue>();
ListBox boxbox = new ListBox();
foreach (ReportParameterInfo param in parameters)
{
paramList = param.ValidValues.ToList();
labels.Clear();
boxbox.Items.Clear();
foreach (ValidValue val in paramList)
{
labels.Add(val.Label + " - " + val.Value);
}
foreach (string lab in labels)
{
boxbox.Items.Add(lab);
}
flyGrid.Children.Add(boxbox);
}
编辑:请参阅下面的解决方案。对于任何好奇的人,我正在尝试绕过 SSRS 糟糕的参数 UI,并根据报告中的内容实现我自己的 UI。
【问题讨论】:
-
运行这个会发生什么?错误?什么都没有?
-
看起来您正在清除每个参数的列表。您需要维护一个组合框值列表,然后在更改所选值时(通过绑定或事件),更改
ValidValue的标签。我不能给你任何代码,因为我不确定你在什么环境下工作。可能是List<string>和List<List<ValidValue>>或Dictionary<string, List<ValidValue>> -
没有错误;列表框只会相互覆盖。谢谢马修的回复。我最终以不同的方式解决了它,但我很欣赏这些想法。
标签: c# wpf reporting-services foreach listbox