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;
        }
    }
代码
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;
}
}
原文地址:https://www.cnblogs.com/wucg/p/1750373.html