Crystal Report Pull模式,参数设置
代码
protected void Page_Load(object sender, EventArgs e)
{
ReportDocument ReportDoc;
// 在此处放置用户代码以初始化页面
ReportDoc = new ReportDocument();
ReportDoc.Load(Server.MapPath("MyCrystalReport.rpt"));
#region 登陆信息设置
TableLogOnInfo logonInfo = new TableLogOnInfo();//
foreach (CrystalDecisions.CrystalReports.Engine.Table tb in ReportDoc.Database.Tables)
{
logonInfo = tb.LogOnInfo;
logonInfo.ConnectionInfo.ServerName = @".\sqlserver2005";
logonInfo.ConnectionInfo.DatabaseName = "FSZJCM0420";//
logonInfo.ConnectionInfo.UserID = "sa";
logonInfo.ConnectionInfo.Password = "123";//
tb.ApplyLogOnInfo(logonInfo);
}
#endregion
// 声明将参数传递给
//查看器控件所需的变量。
ParameterFieldDefinitions paramFDefs = ReportDoc.DataDefinition.ParameterFields;
ParameterFieldDefinition paraID = paramFDefs["ID"]; //参数名
ParameterValues paraVals = paraID.CurrentValues;
ParameterDiscreteValue paraVal = new ParameterDiscreteValue();
paraVal.Value = 30; //设置离散值
paraVals.Clear();
paraVals.Add(paraVal);
paraID.ApplyCurrentValues(paraVals);
//第二个参数.
paraID = paramFDefs["ID2"];
paraVals = paraID.CurrentValues;
paraVal = new ParameterDiscreteValue();
paraVal.Value = 40; //设置离散值
paraVals.Clear();
paraVals.Add(paraVal);
paraID.ApplyCurrentValues(paraVals);
#region 此段代码设置参数有问题,翻页,或点击左边分组树回送时, 参数丢失。仅作参考。
/*
// 声明将参数传递给
//查看器控件所需的变量。
ParameterFields paramFields = new ParameterFields();
ParameterField paramField = new ParameterField();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();
ParameterRangeValue rangeVal = new ParameterRangeValue(); //我没用到
// 第一个参数是具有多个值的离散参数。
// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "ID";
// 设置第一个离散值并将其传递给该参数。
discreteVal.Value = 20;
paramField.CurrentValues.Add(discreteVal);
//(只有一个值就不需要加第二个离散值) 设置第二个离散值并将其传递给该参数。
// discreteVal 变量被设置为新值,这样,以前的设置
//就不会被覆盖。
//discreteVal = new ParameterDiscreteValue();
//discreteVal.Value = "Aruba Sport";
//paramField.CurrentValues.Add(discreteVal);
// 将该参数添加到参数字段集合。
paramFields.Add(paramField);
paramField = new ParameterField();
paramField.ParameterFieldName = "ID2";
discreteVal = new ParameterDiscreteValue();
discreteVal.Value = 30;
paramField.CurrentValues.Add(discreteVal);
paramFields.Add(paramField);
//// 第二个参数为区域值。paramField 变量
////被设置为新值,这样,以前的设置就不会被覆盖。
//paramField = new ParameterField();
//// 设置参数字段的名称,它必须
////和报表中的参数相符。
//paramField.ParameterFieldName = "ID2";
//// 设置范围的开始值和结束值并将该范围传递给
////该参数。
//rangeVal.StartValue = 42;
//rangeVal.EndValue = 72;
//paramField.CurrentValues.Add(rangeVal);
//// 将第二个参数添加到参数字段集合。
//paramFields.Add(paramField);
//// 将参数字段集合放入查看器控件。
CrystalReportViewer1.ParameterFieldInfo = paramFields;
*/
#endregion
CrystalReportViewer1.ReportSource = ReportDoc; ;
}
PUSH 模式:
代码
public partial class TestPush : System.Web.UI.Page
{
MyCrystalReportPush crpush = new MyCrystalReportPush();
protected void Page_Load(object sender, EventArgs e)
{
//DataSet1 ds1 = new DataSet1();
DataSet1TableAdapters.Gzl_LxspTableAdapter da = new CrystalReportWebApp.push.DataSet1TableAdapters.Gzl_LxspTableAdapter();
DataSet1.Gzl_LxspDataTable dt= da.GetData();
crpush.SetDataSource(dt as DataTable );
this.CrystalReportViewer1.ReportSource = crpush;
}
}