我有一个表单,我希望用户能够导出到PDF /打印关闭,所以我包含了一个报表查看器,并已将值作为参数发送。
所有这些都工作得很好,除了ListBox,我遇到了问题。
此ListBox中有一些可能的项目,我希望将其发送到报告中以供显示。
目前有:
List<string> passengersParameter = new List<string>();
for ( int i = 0 ; i < moreForm.passengerListBox.Items.Count ; i++ )
{
passengersParameter.Add( moreForm.passengerListBox.Items[i].ToString() );
}
parameters.Add( new ReportParameter("passengerList", passengersParameter.ToArray()));
当我在报表上添加参数时,这会显示列表的第一个条目,但是,当我将其设置为文本并选择Allow Multiple Values
时,参数只显示#Error
为了让它显示数组中的所有值,我还需要做些什么吗?我很茫然。
答案 0 :(得分:0)
最后想出了如何让它发挥作用。
显然我们不能只将列表传递给报告:我们需要添加一个DataSet。
所以我上面的例子
testData chaos = new testData();
...
foreach ( Passenger victim in showMe.Passengers )
{
// msdn.microsoft.com/en-us/library/5ycd1034(v=VS.100).aspx
DataRow skeez = chaos.Tables["Victims"].NewRow();
skeez["Name"] = victim.ToString();
chaos.Tables["Victims"].Rows.Add( skeez );
}
this.victimsBindingSource.DataSource = chaos.Tables["Victims"];
只需确保将DataSet添加到报表中,然后使用填充的数据以编程方式设置它(上图)。
然后(如果使用VS 2010)确保在Report Viewer上选择DataSource并设置BindingSource(应该由VS自动生成)。
希望对你有帮助。