我的代码如下: for(int i=0;i<dt.Rows.Count;i++)
{
cr.SetParameterValue("ftime", Convert.ToDateTime(this.dateTimePicker3.Text).ToString("yyyy-MM-dd"));
cr.SetParameterValue("etime", Convert.ToDateTime(this.dateTimePicker4.Text).ToString("yyyy-MM-dd"));
cr.SetParameterValue("car_h",dt.Rows[i]["car_h"].ToString());
cr.SetParameterValue("cpxh", dt.Rows[i]["cpxh"].ToString());
string str = dt.Rows[i]["zxingcheng"].ToString();
cr.SetParameterValue("zxingcheng",shujuzhuanhuan(dt.Rows[i]["zxingcheng"].ToString()));
cr.SetParameterValue("yingcheng", shujuzhuanhuan(dt.Rows[i]["yingcheng"].ToString()));
cr.SetParameterValue("xingcheng", shujuzhuanhuan(dt.Rows[i]["xingcheng"].ToString()));
cr.SetParameterValue("jine", shujuzhuanhuan(dt.Rows[i]["jine"].ToString()));
cr.SetParameterValue("dengh", shujuzhuanhuan(dt.Rows[i]["dengh"].ToString()));
cr.SetParameterValue("zkc", dt.Rows[i]["zkc"].ToString());
if (dt.Columns.Count > 8)
{
cr.SetParameterValue("riqi", dt.Rows[i]["riqi"].ToString());
}
else
{
cr.SetParameterValue("riqi", "");
}
}
//}
this.crystalReportViewer3.ReportSource = cr;
问题是,循环完之后为什么报表只显示一行数据,而我想显示多行数据。改怎么解决。在报表的参数字段中已经设置允许多个值。
能给出代码或者步骤的多给分
{
cr.SetParameterValue("ftime", Convert.ToDateTime(this.dateTimePicker3.Text).ToString("yyyy-MM-dd"));
cr.SetParameterValue("etime", Convert.ToDateTime(this.dateTimePicker4.Text).ToString("yyyy-MM-dd"));
cr.SetParameterValue("car_h",dt.Rows[i]["car_h"].ToString());
cr.SetParameterValue("cpxh", dt.Rows[i]["cpxh"].ToString());
string str = dt.Rows[i]["zxingcheng"].ToString();
cr.SetParameterValue("zxingcheng",shujuzhuanhuan(dt.Rows[i]["zxingcheng"].ToString()));
cr.SetParameterValue("yingcheng", shujuzhuanhuan(dt.Rows[i]["yingcheng"].ToString()));
cr.SetParameterValue("xingcheng", shujuzhuanhuan(dt.Rows[i]["xingcheng"].ToString()));
cr.SetParameterValue("jine", shujuzhuanhuan(dt.Rows[i]["jine"].ToString()));
cr.SetParameterValue("dengh", shujuzhuanhuan(dt.Rows[i]["dengh"].ToString()));
cr.SetParameterValue("zkc", dt.Rows[i]["zkc"].ToString());
if (dt.Columns.Count > 8)
{
cr.SetParameterValue("riqi", dt.Rows[i]["riqi"].ToString());
}
else
{
cr.SetParameterValue("riqi", "");
}
}
//}
this.crystalReportViewer3.ReportSource = cr;
问题是,循环完之后为什么报表只显示一行数据,而我想显示多行数据。改怎么解决。在报表的参数字段中已经设置允许多个值。
能给出代码或者步骤的多给分
解决办法就是先将多个相同字段的值拼接为一个字符串,再绑定上去。string sFtime = null; for(int i=0;i <dt.Rows.Count;i++)
{
sFtime += Convert.ToDateTime(this.dateTimePicker3.Text).ToString("yyyy-MM-dd") + '\r' +'\n';
}
cr.SetParameterValue("ftime", sFtime );
仅供参考
给你一个参考。
//定义水晶报表参数离散值变量
ParameterDiscreteValue PV;
//定义水晶报表参数集合变量
ParameterValues PVS = new ParameterValues();
//这里是把一个字串切成一个数组,跟你的记录集循环一个道理
string[] arrayDDH = Request.QueryString["DDH"].Split(Convert.ToChar(0x2));
//循环把值给PV
//然后把PV加大PVS
//PVS容纳多个值
foreach (string sDDH in arrayDDH)
{
if ((sDDH == "") || (sDDH == null)) continue;
PV = new ParameterDiscreteValue();
PV.Value = sDDH;
PVS.Add(PV);
}
//获取报表参数
ParameterFieldDefinition PFD = Rpt.DataDefinition.ParameterFields["pDDH"];
//把PVS传给报表参数
PFD.ApplyCurrentValues(PVS);